У меня есть Plist файл:Оспаривание Plist переборе и NSDictionary проблемы
Root - Dictionary
categories - Array
item 0 - Dictionary
item 1 - Dict
item 2 - Dict
я загрузить файл, как так:
-(void) loadCategories
{
// Loads the categories from the SymbolList.plist file
NSString *file = [[NSBundle mainBundle] pathForResource:@"SymbolList" ofType:@"plist"];
NSMutableDictionary *plistSymbolList = [[NSMutableDictionary alloc] initWithContentsOfFile:file];
categoriesList = [plistSymbolList objectForKey:@"categories"];
NSLog(@"count is: %d", [categoriesList count]);
// Here I am just testing if this method will work
for(int i = 0; i < [categoriesList count]; i++)
{
NSDictionary *dict = [categoriesList objectAtIndex:i];
NSLog(@"dict count: %d", [dict count]);
}
// ideally this is what I'd like to do but doesn't work on device
for (NSDictionary *dictionary in categoriesList)
{
if (dictionary == nil)
NSLog(@"It's nil.");
NSLog(@"count: %d", [dictionary count]);
// get and display the category information
NSString *catName = [dictionary objectForKey:@"Category Name"];
NSLog(@"catName is: %@", catName);
NSString *catImage = [dictionary objectForKey:@"Category Image"];
NSLog(@"catImage is: %@", catImage);
NSString *fullFile = [NSString stringWithFormat:@"%@.png", catImage];
NSLog(@"Full file name is: %@", fullFile);
SymbolButton *categoryButton = [[SymbolButton alloc] initWithName:catName andSymbol:catImage];
[categoryButton addTarget:self action:@selector(categoryButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[categoryButtonList addObject:categoryButton];
NSLog(@"Added Button to list");
}
[self updateCategories];
Просто резюмировать Я: 1) при загрузке файла, чтобы получить мой корень 2) получение моего списка категорий 3) прохождение через каждый из них и получение какого-либо значения либо с помощью объекта objectAtIndex OR objectForKey
ВСЕ этот код работает GREAT на эмуляторе и отлично работает без сбоев. Эта функция СКОНЧАЛСЯ как только я запустить его на устройстве:
TestApp[4734:207] count is: 3
TestApp[4734:207] *** -[NSCFDictionary objectAtIndex:]: unrecognized selector sent to instance 0x122d10
TestApp[4734:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFDictionary objectAtIndex:]: unrecognized selector sent to instance 0x122d10'
Из сообщения об ошибке это говорит существует проблема с моими экземплярами. Но почему это будет работать на сим, а не на устройстве? Все обновляется до последней SDK и версии ОС (не бета) и т.д.
Если я закомментируйте первый цикл я получаю:
TestApp[4760:207] count is: 3
TestApp[4760:207] *** -[NSCFString count]: unrecognized selector sent to instance 0x120470
TestApp[4760:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFString count]: unrecognized selector sent to instance 0x120470'
Спасибо за любую помощь и все. Это убивает меня :)
«Эта функция DIES, как только я запускаю ее на эмуляторе» - вы имели в виду, «... запустить ее на устройстве»? – egrunin
Извините, да .. редактирование сейчас. Он умирает, когда я запускаю его на устройстве. –