我有一个ViewController
,带有一个“ Note”对象作为实例变量。在ViewController
出现之前设置此变量。
Note
对象包含一个customFields
NSMutableDictionary<String, String>
。
我将字典的每个值绑定到NSTextField
中字典的viewWillAppear
:
newTextField.bind(.value, to: self, withKeyPath: "note.customFields.\(key)", options: nil)
textField正确显示了note.customFields.\(key)
中的值。
但是,如果用户编辑该值并保存,则更改不会反映在字典中。
save()
(基本上是managedobjectcontext.save())方法已经在其他字段(绑定到其他非字典实例变量)上进行了测试,并且可以正常工作。
词典为什么没有收到更新后的值?
感谢您的帮助:-)
编辑:这是模型中customField的定义:
答案 0 :(得分:0)
这里的问题是可变类型(此处为NSMutableDictionary
)和核心数据的组合。
这篇文章帮助了:Core Data not saving transformable NSMutableDictionary
解决方案摘要
正如上面提到的第一个链接中所建议的那样,我尝试使用NSMutableDictionary
通知note.valueDidChange(forKey: "customFields")
我的NSDictionary
中的更改,但是没有正常工作。
所以我最终在第一个链接中使用了第二个命题,这与第二个链接中提出的解决方案相同:
mutableDict = dictionary.mutableCopy()
作为可转换类型dictionary = mutableDict.copy()
,然后保存回到nsdictionary:NSTextField
useShinyjs()
绑定的特定情况,绑定将可用于显示值,但是对于更新值,您必须在没有绑定的情况下进行操作(无论何时视图消失或文本字段结束编辑时)< / li>
希望有帮助!