Вопрос

У меня есть проблема с представлением таблицы в 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;
}

Это сбоя в линейной ячейке. Textlabel.text = [Animals objectAtIndex: row]; и говорит мне, что завершение приложения из-за исключения с необратимым «nsinvalidargumentException», причина: '-[__ nscfdictionary objectatindex:]: не признанный селектор, отправленный на экземпляр

Это было полезно?

Решение

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

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

Другие советы

[plistDict objectForKey:@"Animals"];

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

Ошибка кажется, что вы звоните objectAtIndex на объекте nsdictionary in line cell.textlabel.text = [Animals objectAtIndex: row]; Проверьте, что содержит животное во время выполнения. Для этого используйте NSLOG до этой строки. Nslog (@"%@", животные);

Похоже animals есть некоторые dictionary И вы звоните objectAtIndex: метод на нем. objectAtIndex: является NSArray метод

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top