0
在我的用戶默認值中,我有一個字典數組,每個數組代表一個對象。我正在嘗試實現一種方法來更改具有「名稱」鍵的對象的名稱。我在NSObject的KVO兼容子類中這樣做,因爲名稱是NSTableView中的文本字段。NSUserDefaults不會寫入磁盤
我能夠找到正確的詞典,更改該對象中鍵的值,並替換數組中的該對象 - NSLog確認此過程的每一步。此外,該更改反映在tableview中。但是,當涉及到同步默認值時,它不會寫入。什麼明顯的錯誤一直困擾我幾乎一天!?
- (void)setName:(NSString *)aName {
if (name && aName != name) {
NSMutableArray *existingArray = [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"array"]];
[existingArray enumerateObjectsUsingBlock:^(id object, NSUInteger idx, BOOL *stop) {
if ([[object valueForKey:@"name"] isEqualToString:name]) {
NSMutableDictionary *data = [existingArray objectAtIndex:idx];
[data setObject:aName forKey:@"name"];
[existingCrates replaceObjectAtIndex:idx withObject:data];
[[NSUserDefaults standardUserDefaults] setObject:existingCrates forKey:@"crates"];
NSLog(@"this is the new existingArray: %@", existingArray);
NSLog(@"this is the new plist: %@", [[NSUserDefaults standardUserDefaults] objectForKey:@"array"]);
[[NSUserDefaults standardUserDefaults] synchronize];
name = aName;
return;
}
}];
}
else {
name = aName;
}
}