【发布时间】:2013-05-29 19:55:56
【问题描述】:
在我的项目中,我有一个 NSArrayController 绑定以保存到应用程序的标准默认值 (NSUserDefaults)。这本身就完美运行 - 添加的对象按预期保存和恢复。
但是,如果我以编程方式修改 NSArrayController 数组中包含的 NSMutableDictionaries 之一,则不会保存任何更改。似乎只有在创建字典时设置的值才会保留。
我怀疑这是因为在数组中的字典上简单地调用 setObject:forValue: 不会通知控制器更改,但我不确定。我做错了吗?
更新:我已经从 NSMutableDictionary 切换到符合 KVC 的自定义对象(据我所知 - 我正在使用属性,因此应该注意)以及 NSCoding。它可以而且确实可以很好地保存和恢复 - 它只是不一致。它有点像在需要时保存,而不是在我更新属性时保存。
【问题讨论】:
-
您不使用用户默认控制器是否有原因?您是否在修改对象之前使用 [arrayController willChangeValueForKey:@"
"],然后在之后使用 [arrayController didChangeValueForKey:@" "]? -
我正在使用用户默认值,因为在这种情况下它似乎很有意义 - 数组只是用户下载的列表。此外,虽然我没有使用 will/didchangevalueforkey,但应该不再需要 - 请参阅更新后的原始帖子。
标签: nsuserdefaults nsmutabledictionary cocoa-bindings nsarraycontroller