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:]:突變方法發送到 不變對象'
我在做什麼錯?
謝謝。現在它不再崩潰,但它仍然不能保存到NSUserdefaults – user1301000 2012-04-15 09:29:28
那是因爲你沒有對「歷史」實例做任何事情。嘗試組織流 - 從NSUserDefaults中獲取所需的所有內容,處理數據並在最後存儲它並將其同步回去。在調試器中同步前檢查數據 – Stavash 2012-04-15 10:05:39
感謝指針stavash,它幫助我解決了這個問題。 – user1301000 2012-04-15 10:50:23