テーブルビューの行を削除しようとしています。その後、更新されたテーブルビューを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);
}
}
実行すると1つの行を削除できますが、保存されません。次の行を削除しようとすると、次のメッセージが表示されます。
2012-04-15 11:02:58.704 test220 [88546:f803] *キャッチされなかった例外'NSInternalInconsistencyException'が原因でアプリを終了しています、理由:'-[__ NSCFArray removeObjectAtIndex:]:変更メソッドが不変オブジェクトに送信されました'
私は何が間違っているのですか?