试图删除NSUserdefault数组中的表格视图行
问题描述:
我想删除表格视图中的行int,然后在NSUserdefault中将更新后的表格视图保存到数组中。它看起来像这样:试图删除NSUserdefault数组中的表格视图行
- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath {
NSMutableArray *stringsArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"history"];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSMutableArray *history = [NSMutableArray arrayWithArray:[prefs objectForKey:@"history"]];
NSUInteger row = [indexPath row];
NSUInteger count = [stringsArray count];
if (row < count) {
[stringsArray removeObjectAtIndex:row];
[prefs setObject:history forKey:@"history"];
[[NSUserDefaults standardUserDefaults] synchronize];
[tableView reloadData];
NSLog(@"tabort %d", row);
NSLog(@"tabort %d", count);
NSLog(@"tabort %@", stringsArray);
}
}
当我运行它,我可以删除一行,但它并没有得到保存,当我尝试删除下一行是以下消息craches:
2012 -04-15 11:02:58.704 test220 [88546:F803] *终止应用程序由于 未捕获的异常 'NSInternalInconsistencyException',原因: ' - [__ NSCFArray removeObjectAtIndex:]:突变方法发送到 不变对象'
我在做什么错?
答
尝试改变行:
NSMutableArray *stringsArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"history"];
到:
NSMutableArray *stringsArray = [NSMutableArray arrayWithArray: [[NSUserDefaults standardUserDefaults] arrayForKey:@"history"]];
谢谢。现在它不再崩溃,但它仍然不能保存到NSUserdefaults – user1301000 2012-04-15 09:29:28
那是因为你没有对“历史”实例做任何事情。尝试组织流 - 从NSUserDefaults中获取所需的所有内容,处理数据并在最后存储它并将其同步回去。在调试器中同步前检查数据 – Stavash 2012-04-15 10:05:39
感谢指针stavash,它帮助我解决了这个问题。 – user1301000 2012-04-15 10:50:23