gpt4 book ai didi

cocoa - NSUserDefaults 不会写入磁盘

转载 作者:行者123 更新时间:2023-12-03 17:56:37 24 4
gpt4 key购买 nike

在我的用户默认设置中,我有一个字典数组,每个字典代表一个对象。我正在尝试实现一种方法来更改具有“name”键的对象名称。我在 NSObject 的 KVO 兼容子类中执行此操作,因为名称是 NSTableView 中的文本字段。

我能够找到正确的字典,更改该对象中键的值,并替换数组中的该对象 - NSLog 确认此过程的每一步。此外,更改也会反射(reflect)在表格 View 中。然而,当涉及到同步默认值时,它就是不写。是什么明显的错误让我耽搁了将近一天!?

- (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;
}

}

最佳答案

虽然我没有收到任何错误指示,但我试图改变一个不可变的元素。通过将不可变对象(immutable对象)复制到可变对象并将它们写入用户默认值来修复。

关于cocoa - NSUserDefaults 不会写入磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12355482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com