gpt4 book ai didi

ios - NSMutableArray removeObjectAtIndex 在第二次执行时崩溃

转载 作者:行者123 更新时间:2023-11-28 18:24:26 26 4
gpt4 key购买 nike

我有一个 TableView ,其中包含许多我希望能够删除的行。填充 TableView 的数据存储在 NSMutableArray 中。要删除一行中的数据,我调用:

- (void)deleteFromArray:(NSUInteger) number{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; //load NSUserDefaults
NSMutableArray *storedArray = [[ NSMutableArray alloc] init];
storedArray = [prefs objectForKey: @"mydata"];
[storedArray removeObjectAtIndex:number];

[prefs setObject:storedArray forKey:@"mydata"];
[storedArray release];
[prefs synchronize];

}

来自

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
subscribe *subscribeclass = [subscribe alloc];
[subscribeclass deleteFromArray: indexPath.row];
[myTableView reloadData];
}
}

这在我第一次删除行时工作正常。但是当我删除第二行时,应用程序在 deleteFromArray 中的以下行崩溃:

[storedArray removeObjectAtIndex:number];

有什么想法吗?

最佳答案

来自您的 NSUserDefaults 的数组是一个 NSArray,而不是一个 NSMutableArray。您应该将代码修改为如下所示:

- (void)deleteFromArray:(NSUInteger) number{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; //load NSUserDefaults
NSMutableArray *storedArray = [[prefs objectForKey:@"mydata"] mutableCopy];
[storedArray removeObjectAtIndex:number];

[prefs setObject:storedArray forKey:@"mydata"];
[storedArray release];
[prefs synchronize];
}

这会创建不可变数组的副本并使其可变,以便您可以修改它。

关于ios - NSMutableArray removeObjectAtIndex 在第二次执行时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13198389/

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