Iphone: Proplem с табличным представлением - PullRequest
0 голосов
/ 10 июня 2011

У меня проблема с просмотром таблиц в iphone. Я не могу понять, почему он вылетает каждый раз, когда вот код

   - (void)viewDidLoad
{
     [self checkAndCreatePList];
    NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:pListPath];

    self.animals = [plistDict objectForKey:@"Animals"];



         [super viewDidLoad];

}



    -(UITableViewCell *) tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath
{
    static NSString *SimpleTableIdentifier =@"SimpleTableIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];
    if(cell== nil){
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:SimpleTableIdentifier]autorelease];
    }
    NSUInteger row = [indexPath row];

    cell.textLabel.text = [animals objectAtIndex:row];

    return cell;
}

, он вылетает в строке cell.textLabel.text = [животные objectAtIndex: row];и сообщает мне, что завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [__ NSCFDictionary objectAtIndex:]: нераспознанный селектор, отправленный на экземпляр

Ответы [ 4 ]

2 голосов
/ 10 июня 2011

Ключ Animals в вашем списке ссылок относится к словарю, а не к массиву.Словари не имеют гарантированного порядка, поэтому запрос объекта по определенному индексу не имеет смысла.

В дополнение к этому у вас есть утечка памяти - plistDict выделяется, но никогда не освобождается.Вы запускаете статический анализатор над своим кодом?

0 голосов
/ 10 июня 2011

Похоже, animals - это какой-то dictionary, и вы вызываете objectAtIndex: метод для него. objectAtIndex: метод NSArray.

0 голосов
/ 10 июня 2011

появляется ошибка, что вы вызываете objectAtIndex для объекта NSDictionary в строке cell.textLabel.text = [animals objectAtIndex: row]; проверьте, что содержит животное во время выполнения. Для этого используйте NSLog перед этой строкой. NSLog (@ "% @", животные);

0 голосов
/ 10 июня 2011

[plistDict objectForKey:@"Animals"];

возвращает словарь, а не массив, как вы ожидаете.Вам нужно проверить файл plist, чтобы убедиться, что данные верны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...