想要从我的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];
答案 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 tool或setting an environment variable。
您将获得更具描述性的错误消息,该消息还将标识您尝试访问的对象类型。