Приложение вылетает при удалении первого элемента из plist (UITableView) - PullRequest
0 голосов
/ 29 июля 2011

В хотите удалить строки из моего UITableView.UITableview получает данные из списка.Поэтому, когда я удаляю строку, я приказываю приложению удалить соответствующий элемент в списке (в данном случае словарь. Один элемент словаря (Имя) - это заголовок UITableViewCell, поэтому список выглядит так:

    Dictionary
         KEY(Name)
           ITEM
         KEY(Description)
           ITEM
    Dictionary
          KEY(name)
             ....

) И я использую следующий код для удаления строк, он отлично работает, кроме самой первой строки.Приложение вылетает, когда я пытаюсь удалить первую строку, я понятия не имею, почему.

int g = indexPath.row;
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *path = [documentsDirectory stringByAppendingPathComponent:@"data.plist"];
        NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:path];
        [array removeObjectAtIndex:g];
        [array writeToFile:path atomically:YES];

1 Ответ

1 голос
/ 29 июля 2011

EXC_BAD_ACCESS обычно означает, что программа пыталась использовать объект, который уже был освобожден.

Я сомневаюсь, что таким объектом может быть array, поскольку он был только что выделен, когда вы пытаетесь удалить его 0-й элемент. Вы можете легко проверить это, добавив трассировку NSLog как здесь:

    NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:path];
    NSLog(@"Array count: %d", [array count]);
    [array removeObjectAtIndex:g];

В общем, чтобы определить, какой объект может быть, я предлагаю включить NSZombies. Это можно сделать, запустив приложение с помощью инструмента производительности "Зомби" или , установив переменную среды .

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

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