NSManagedObject changedValues 忽略字符串值

Posted

技术标签:

【中文标题】NSManagedObject changedValues 忽略字符串值【英文标题】:NSManagedObject changedValues ignoring string value 【发布时间】:2014-03-14 14:07:38 【问题描述】:

我有一个 NSManagedObject 的子类,其中有一个“货币”属性。该属性是一个 3 个字母的字符串。当我将它从“USD”更改为“CAD”,然后在对象上调用changedValues 时,changedValues 返回一个空字典。这是正常的行为吗?

我先保存managedObjectContext,然后修改属性,再调用changedValues。

该属性是:非瞬态、可选、未索引、无默认值。

编辑:感谢帮助我在我的代码中发现错误的人。现在它工作得很好。

【问题讨论】:

你能显示一些关于值变化的代码吗? 【参考方案1】:

我在我的代码中发现了一个错误。现在它工作得很好。 ;)

我使用委托方法从另一个 viewController 更新对象。从那个 viewController 回来后,我将 managedObjectContext 保存在 viewWillAppear 中,这基本上删除了 changedValues。

【讨论】:

答案没有用。请分享一些上下文。 不要忘记尽可能将其标记为已解决。【参考方案2】:

在保存上下文之前执行此操作。

NSManagedObject Class Reference

改变的值

返回一个包含键和(新)值的字典 自上次获取以来已更改的持久属性或 保存接收者。

【讨论】:

OP 正在在保存上下文之前这样做 是的,刚刚注意到这一点。忽略这个答案。

以上是关于NSManagedObject changedValues 忽略字符串值的主要内容,如果未能解决你的问题,请参考以下文章

NSManagedObject 故障/无法获得由 NSManagedObject 处理的“原始”对象

NSManagedObject - NSSet 被删除?

如何根据现有的 NSManagedObject 值在 NSManagedObject 派生类中设置默认值?

属性作为“当前 NSManagedObject”的视图控制器中的 NSManagedObject

创建新的 NSManagedObject 并将其分配给新的 NSManagedObject *有时*会失败

将 NSManagedObject 与另一个 NSManagedContext(多线程)中的“相同”NSManagedObject 合并