试图删除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"]]; 
+0

谢谢。现在它不再崩溃,但它仍然不能保存到NSUserdefaults – user1301000 2012-04-15 09:29:28

+0

那是因为你没有对“历史”实例做任何事情。尝试组织流 - 从NSUserDefaults中获取所需的所有内容,处理数据并在最后存储它并将其同步回去。在调试器中同步前检查数据 – Stavash 2012-04-15 10:05:39

+0

感谢指针stavash,它帮助我解决了这个问题。 – user1301000 2012-04-15 10:50:23