Я пытаюсь использовать UITableViewController (делегат и источник данных для представления) для отображения простой таблицы, прочитанной из Plist. Plist содержит NSDictionary, который сам содержит несколько объектов NSDictionary, которые представляют объекты, используемые в моем приложении.
Остальная часть кода выглядит примерно так (упрощенно):
- (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];
}
Поскольку я не использую какие-либо разделы, я возвращаю 1
в numberOfSectionsInTableView
контроллера.
Метод objectFromDictionary
"MyObject
" назначает данные, считанные из NSDictionary
, новому объекту. Я тоже пытался сохранить, копировать и т. Д., Но это ничего не изменило.
Я получаю EXC_BAD_ACCESS
в tableView:numberOfRowsInSection
при звонке [objects count]
. Я попытался использовать инструмент выделения объектов, но не нашел проблемы. Мой Plist в настоящее время содержит только данные для одного объекта. Отладчик отображает «1 объект» красным цветом для атрибута objects
, поэтому я думаю, что это связано с проблемой.