Ich versuche einen UITableViewController (Delegate & dataSource für die Ansicht) zu verwenden, um eine einfache Tabelle anzuzeigen, die von einem Plist gelesen wird. Das Plist enthält ein NSDictionary, das selbst mehrere NSDictionary-Objekte enthält, die Objekte darstellen, die in meiner Anwendung verwendet werden.EXC_BAD_ACCESS in UITableViewController
Der Rest des Codes sieht wie folgt aus etwas (vereinfacht):
- (void)viewDidLoad {
[super viewDidLoad];
[self loadObjectsFromPlist];
}
- (void)loadObjectsFromPlist {
NSString *objectPlistFile = [[NSBundle mainBundle] pathForResource:@"Objects" ofType:@"plist"];
NSDictionary *objectsDictionary = [NSDictionary dictionaryWithContentsOfFile:objectsPlistFile];
objects = [[NSMutableArray alloc] init];
NSEnumerator *objectEnumerator = [objectsDictionary objectEnumerator];
NSDictionary *objectData;
while(objectData = [objectEnumerator nextObject]) {
[objects addObject:[MyObject objectFromDictionary:objectData]];
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [objects count];
}
Da ich alle Abschnitte nicht verwende ich 1
in numberOfSectionsInTableView
des Controllers zurück.
Die objectFromDictionary
Methode von "MyObject
" weist die Daten, die von NSDictionary
gelesen werden, einem neuen Objekt zu. Ich versuchte es auch zu behalten, zu kopieren, aber daran änderte sich nichts.
Ich bekomme eine EXC_BAD_ACCESS
in tableView:numberOfRowsInSection
beim Aufruf [objects count]
. Ich habe versucht, das Object Allocation Instrument zu verwenden, aber ich habe kein Problem gefunden. Mein Plist enthält derzeit nur Daten für ein Objekt. Der Debugger zeigt für das Attribut objects
"1 Objekte" in roter Farbe an, daher denke ich, dass dies mit dem Problem zusammenhängt.
Eine Anmerkung ist, dass die rote Farbe für die Variable "1 objects" im Debugger einfach bedeutet, dass der Wert geändert wurde, als die Anwendung zuletzt aktiv war. (ZB. Etwas wurde hinzugefügt oder entfernt.) –
Ah ok ... danke für das Löschen. Das hängt also nicht mit meinem Problem zusammen und macht es noch kryptischer für mich. – Koraktor
Könnte nur ein Übertragungsfehler sein, aber Sie haben [Objekt addObject: [MyObject ..., und es sollte wahrscheinlich sein [Objekte addObject ... –