XCode6/Swift: unrecognized sélecteur envoyé à l'instance
Pensais que je voudrais essayer ma main au développement d'iOS depuis la Swift/ios8 annonce et je vais avoir du mal à obtenir une base tableView à construire.
Actuellement les messages d'erreur suivant lors du chargement de l'application dans le simulateur (Xcode, dit-création n'est pas terminée):
2014-06-11 13:40:56.173 firstapp[2217:85843] -[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0xb20fcf0
2014-06-11 13:40:56.180 firstapp[2217:85843] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0xb20fcf0'
*** First throw call stack:
(
0 CoreFoundation 0x00452916 __exceptionPreprocess + 182
1 libobjc.A.dylib 0x01da28d9 objc_exception_throw + 44
2 CoreFoundation 0x004596f5 -[NSObject(NSObject) doesNotRecognizeSelector:] + 277
3 CoreFoundation 0x003a4857 ___forwarding___ + 1047
4 CoreFoundation 0x003a441e _CF_forwarding_prep_0 + 14
5 UIKit 0x00f149aa -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 2767
6 UIKit 0x00f18ebc -[UITableViewRowData numberOfRows] + 98
7 UIKit 0x00d57bb0 -[UITableView noteNumberOfRowsChanged] + 133
8 UIKit 0x00d57442 -[UITableView reloadData] + 1055
9 UIKit 0x00d5b54d -[UITableView _reloadDataIfNeeded] + 78
10 UIKit 0x00d60ed5 -[UITableView layoutSubviews] + 36
11 UIKit 0x00cd9223 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 601
12 libobjc.A.dylib 0x01db5763 -[NSObject performSelector:withObject:] + 70
13 QuartzCore 0x04441b87 -[CALayer layoutSublayers] + 152
14 QuartzCore 0x044359e9 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 397
15 QuartzCore 0x04441ace -[CALayer layoutIfNeeded] + 160
16 UIKit 0x00db72e3 -[UIViewController window:setupWithInterfaceOrientation:] + 309
17 UIKit 0x00ca5a80 -[UIWindow _rotateToBounds:withAnimator:transitionContext:] + 667
18 UIKit 0x00ca8388 -[UIWindow _rotateWindowToOrientation:updateStatusBar:duration:skipCallbacks:] + 2151
19 UIKit 0x00caa074 -[UIWindow _setRotatableClient:toOrientation:applyTransformToWindow:updateStatusBar:duration:force:isRotating:] + 6723
20 UIKit 0x00ca785d -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:isRotating:] + 128
21 UIKit 0x00ca77d6 -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:] + 84
22 UIKit 0x00ca769e -[UIWindow _setRotatableViewOrientation:updateStatusBar:duration:force:] + 115
23 UIKit 0x00ca7729 -[UIWindow _setRotatableViewOrientation:duration:force:] + 68
24 UIKit 0x00ca66b6 __57-[UIWindow _updateToInterfaceOrientation:duration:force:]_block_invoke + 120
25 UIKit 0x00ca6624 -[UIWindow _updateToInterfaceOrientation:duration:force:] + 406
26 UIKit 0x00ca7445 -[UIWindow setAutorotates:forceUpdateInterfaceOrientation:] + 905
27 UIKit 0x00cacb1f -[UIWindow setDelegate:] + 479
28 UIKit 0x00da4177 -[UIViewController _tryBecomeRootViewControllerInWindow:] + 184
29 UIKit 0x00c9f69a -[UIWindow addRootViewControllerViewIfPossible] + 683
30 UIKit 0x00c9f85c -[UIWindow _setHidden:forced:] + 313
31 UIKit 0x00c9fad9 -[UIWindow _orderFrontWithoutMakingKey] + 49
32 UIKit 0x00cae47b -[UIWindow makeKeyAndVisible] + 80
33 UIKit 0x00c4fa50 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 3228
34 UIKit 0x00c528a3 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1507
35 UIKit 0x00c6c335 __84-[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:]_block_invoke + 59
36 UIKit 0x00c515e3 -[UIApplication workspaceDidEndTransaction:] + 29
37 FrontBoardServices 0x033f42af -[FBSWorkspace clientEndTransaction:] + 87
38 FrontBoardServices 0x033fb71d __53-[FBSWorkspaceClient _queue_handleTransactionBookEnd]_block_invoke + 49
39 CoreFoundation 0x003772f0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 16
40 CoreFoundation 0x0036ba83 __CFRunLoopDoBlocks + 195
41 CoreFoundation 0x0036b1e8 __CFRunLoopRun + 936
42 CoreFoundation 0x0036ab7b CFRunLoopRunSpecific + 443
43 CoreFoundation 0x0036a9ab CFRunLoopRunInMode + 123
44 UIKit 0x00c50efa -[UIApplication _run] + 571
45 UIKit 0x00c54dee UIApplicationMain + 3727
46 firstapp 0x00005011 top_level_code + 97
47 firstapp 0x0000504b main + 43
48 libdyld.dylib 0x022beac5 start + 1
49 ??? 0x00000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
J'ai essayé de suivre la trace de la pile pour la méthode soi-disant à l'origine du problème, mais ne peut pas trouver quelque chose hors de l'ordinaire (actuellement, à la suite d'un tutoriel). J'ai aussi pris mon ViewController.swift:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
//Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "MyTestCell")
cell.text = "Row #\(indexPath.row)"
cell.detailTextLabel.text = "Subtitle #\(indexPath.row)"
return cell
}
}
EDIT: y Compris la source Principale.storyboard:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6154.17" systemVersion="13D65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="CLE-J8-Gwc">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6153.11"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="53f-Xy-Vbi">
<objects>
<viewController id="CLE-J8-Gwc" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="uoO-21-5Iu">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="Kl0-es-OXb">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<connections>
<outlet property="dataSource" destination="CLE-J8-Gwc" id="HG5-Ye-UOQ"/>
<outlet property="delegate" destination="CLE-J8-Gwc" id="I76-0E-fPy"/>
</connections>
</tableView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="yaa-zI-5Eu" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="110.66666666666666" y="562.08333333333337"/>
</scene>
</scenes>
<simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar"/>
<simulatedOrientationMetrics key="orientation"/>
<simulatedScreenMetrics key="destination" type="retina4"/>
</simulatedMetricsContainer> </document>
J'ai vérifié des tonnes de questions concernant le même message d'erreur et n'arrive pas à trouver quelque chose de swift-spécifique ou tout ce qui résout mon problème actuel.
Merci!
OriginalL'auteur pgoggijr | 2014-06-11
Vous devez vous connecter pour publier un commentaire.
Comme indiqué dans la première ligne de votre dump, vous essayez d'envoyer
...numberOfRows...
à un objet de la classeUIViewController
mais cette méthode n'est mise en œuvre dans votre sous-classe.Dans votre fichier nib vous avez besoin de changer la classe de votre vue-contrôleur de
UIViewController
(valeur par défaut) pourViewController
.Ouvrir votre storyboard (ou de la graine fichier), sélectionnez le contrôleur lui-même (il a une icône en bas (ou en haut dans Xcode 6) qui va dire "View Controller" quand vous passez votre souris dessus.
Puis sélectionnez le 3ème icône dans le panneau de propriétés et jusqu'au sommet où il est dit "Classe Personnalisée" entrée "ViewController"
Généralement parlant, n'est pas la peine de poster le code xml de la table de montage séquentiel, ce n'est pas vraiment destiné à être lisible par l'homme, peu importe ce que le xml-philes dire.
Cela a fonctionné! merci pour l'aide et éclaircissements
Cela a fonctionné pour moi aussi. Merci pour le post!
Fantastique!!!! Nice one! D'abord travaillé à temps.
OriginalL'auteur David Berry
Il semble que votre table de source de données n'est pas réglée à votre ViewController classe:
Double assurez-vous que vous avez configuré votre fichier XIB/Storyboard correctement.
OriginalL'auteur Ben Gottlieb
Modifier votre code:
OriginalL'auteur EridB