gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:01:16 25 4
gpt4 key购买 nike

想要从我的 UITableView 中删除行。 UITableview 从 plist 获取数据。因此,当我删除一行时,我告诉应用程序删除 plist 中的相应项目(在本例中是字典。字典的一项(名称)是 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];

最佳答案

EXC_BAD_ACCESS 通常意味着程序试图使用已经被释放的对象。

我怀疑这样的对象可能是数组,因为当您尝试删除它的第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 .

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

关于objective-c - 从 plist (UITableView) 中删除第一项时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6865748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com