2010-12-22 10 views
-2

Der folgende Code für die Initialisierung von Array arbeitet ::Array Initialisierung

NSArray *array = [[NSArray alloc] initWithObjects:@"Toy Story 3",@"Inception",nil]; 
self.list = [array sortedArrayUsingSelector:@selector(compare:)]; 
    [array release]; 
[super viewDidLoad]; 

Aber der folgende Code tut. Der iPhone Simulator wird beendet, sobald ich versuche, durch die Tabellenansicht zu scrollen, mit der ich das Array angezeigt habe. (Erst nach i blättern auf leere tableViewCells)

NSBundle *bundle = [NSBundle mainBundle]; 
NSString *plistPath = [bundle pathForResource:@"MovieList" ofType:@"plist"]; 
NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:plistPath]; 
NSLog([array objectAtIndex:1]); 
self.list = [array sortedArrayUsingSelector:@selector(compare:)]; 
    [array release]; 
[super viewDidLoad]; 

Dies war ein Beispiel-App aus dem Buch "Beginning iPhone Development" von Dave Mark. Im Beispiel haben sie das Array innerhalb des Codes initialisiert, während ich versucht habe, es aus einer externen Datei zu initialisieren.

Die Konsole Log ::

2010-12-22 20:57:43.772 Nav[2474:40b] WARNING: Using legacy cell layout due to delegate implementation of tableView:accessoryTypeForRowWithIndexPath: in <RootViewController: 0x9908870>. Please remove your implementation of this method and set the cell properties accessoryType and/or editingAccessoryType to move to the new cell layout behavior. This method will no longer be called in a future release. 
2010-12-22 20:58:12.480 Nav[2474:40b] WARNING: Using legacy cell layout due to delegate implementation of tableView:accessoryTypeForRowWithIndexPath: in <DisclosureButtonController: 0x9b32ab0>. Please remove your implementation of this method and set the cell properties accessoryType and/or editingAccessoryType to move to the new cell layout behavior. This method will no longer be called in a future release. 
2010-12-22 20:59:13.299 Nav[2474:40b] -[UIDeviceRGBColor length]: unrecognized selector sent to instance 0x9b3d900 
2010-12-22 20:59:13.301 Nav[2474:40b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIDeviceRGBColor length]: unrecognized selector sent to instance 0x9b3d900' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x00db2be9 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x00f075c2 objc_exception_throw + 47 
    2 CoreFoundation      0x00db46fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
    3 CoreFoundation      0x00d24366 ___forwarding___ + 966 
    4 CoreFoundation      0x00d23f22 _CF_forwarding_prep_0 + 50 
    5 UIKit        0x0051a9ca -[UITableViewCellLayoutManager layoutSubviewsOfCell:] + 3424 
    6 UIKit        0x00482e02 -[UITableViewCell layoutSubviews] + 95 
    7 QuartzCore       0x01c70451 -[CALayer layoutSublayers] + 181 
    8 QuartzCore       0x01c7017c CALayerLayoutIfNeeded + 220 
    9 QuartzCore       0x01c6937c _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310 
    10 QuartzCore       0x01c690d0 _ZN2CA11Transaction6commitEv + 292 
    11 QuartzCore       0x01c997d5 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99 
    12 CoreFoundation      0x00d93fbb __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27 
    13 CoreFoundation      0x00d290e7 __CFRunLoopDoObservers + 295 
    14 CoreFoundation      0x00cf1bd7 __CFRunLoopRun + 1575 
    15 CoreFoundation      0x00cf1240 CFRunLoopRunSpecific + 208 
    16 CoreFoundation      0x00cf1161 CFRunLoopRunInMode + 97 
    17 GraphicsServices     0x016e7268 GSEventRunModal + 217 
    18 GraphicsServices     0x016e732d GSEventRun + 115 
    19 UIKit        0x002ca42e UIApplicationMain + 1160 
    20 Nav         0x00002598 main + 102 
    21 Nav         0x00002529 start + 53 
) 
terminate called after throwing an instance of 'NSException' 

enter code here 
+2

Veröffentlichen Sie die Zeile, auf der die App abstürzt, sowie alle Nachrichten, die in Ihrem Protokoll angezeigt werden. –

Antwort

2

Es klingt wie dies für den Debugger einen perfekten Job ist, nicht wahr? Warum nicht einen Haltepunkt in der ersten Zeile setzen und sicherstellen, dass nichts unerwartet Null oder außerhalb der Grenzen ist, während Sie durchgehen und Ihre Variablen untersuchen? Vielleicht ist es auch hilfreich, auf den Fehler zu achten, der zweifellos in der Konsole protokolliert wurde.

Vorausgesetzt, Sie haben weder die Zeile, für die es beendet wird, noch irgendwelche Protokollnachrichten erwähnt, dies ist ungefähr so ​​spezifisch, wie es für jeden möglich ist.

+0

Habe das Konsolenprotokoll hinzugefügt. –

+1

Okay ... also welche Zeile schlägt fehl? Was sind die Ergebnisse Ihrer Verwendung des Debuggers, um den Code zu durchlaufen? Wir haben keine Kristallkugeln und wir werden nicht dafür bezahlt, deine Hand zu halten: * hilf uns, dir zu helfen *. –

0

Das erste Argument für NSLog muss ein NSString sein. Das Objekt, an das Sie es übergeben, scheint Teil des UIColor-Clusters zu sein. Ich schlage vor, Sie ändern:

NSLog(@"%@", [array objectAtIndex:1]); 

Das erste Argument auf jeden Fall ein String ist, und es sagt nur eine Beschreibung zu drucken, je nachdem, was Objekt ist das nächste Argument.