Ich versuche, eine Zeile in der Tabellenansicht zu löschen und danach die aktualisierte Tabellenansicht in NSUserdefault in einem Array zu speichern. Es sieht wie folgt aus:Versuch, eine Tabellenansichtszeile in einem NSUserdefault-Array zu löschen
- (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);
}
}
Wenn ich es laufen kann ich eine Zeile löschen, aber wird es nicht gespeichert und wenn ich versuche, um die nächste Zeile löschen es mit der folgenden Meldung Craches:
2012 -04-15 11: 02: 58,704 test220 [88546: F803] * Terminating app aufgrund abgefangene Ausnahme 'NSInternalInconsistencyException', Grund: '- [__ NSCFArray removeObjectAtIndex]: Mutieren Methode unveränderliches Objekt gesendet'
Was mache ich falsch?
Danke. Jetzt stürzt es nicht mehr ab, speichert es aber immer noch nicht in NSUserdefaults – user1301000
Das liegt daran, dass Sie nichts mit der "history" -Instanz tun. Versuchen Sie, den Fluss zu organisieren - Nehmen Sie alles aus NSUserDefaults, manipulieren Sie die Daten und speichern Sie sie am Ende und synchronisieren Sie sie zurück. Überprüfen Sie die Daten in Ihrem Debugger, bevor es synchronisiert wird – Stavash
Danke für den Zeiger stavash, es half mir, es zu lösen. – user1301000