2012-04-15 41 views
0

我想刪除表格視圖中的行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:]:突變方法發送到 不變對象'

我在做什麼錯?

回答

3

嘗試改變行:

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