从plist中删除第一项时应用程序崩溃(UITableView)

时间:2011-07-28 21:13:48

标签: objective-c ios uitableview plist

想要从我的UITableView中删除行。 UITableview从plist获取数据。因此,当我删除一行时,我告诉应用程序删除plist中的相应项目(在本例中为字典。字典(Name)的一项是UITableViewCell的标题,因此plist看起来像这样:

    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 个答案:

答案 0 :(得分:1)

EXC_BAD_ACCESS通常意味着程序试图使用已经解除分配的对象。

我怀疑这个对象可能是array,因为当你尝试删除它的第0个元素时它刚被分配。您可以通过添加NSLog跟踪轻松检查这一点,如下所示:

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

一般来说,要确定哪个对象可以,我的建议是启用NSZombies。您可以通过运行应用using the "Zombies" performance toolsetting an environment variable

来实现

您将获得更具描述性的错误消息,该消息还将标识您尝试访问的对象类型。