我有一个名为Post
的核心数据实体。其中一个属性称为updated
,它是一个日期。存储的XML如下所示:
<attribute name="updated" type="date">266164481.00000000000000000000</attribute>
由此我得出结论,数据正确存储。当我读回数据时,返回的值是NSCFNumber
,而不是NSDate
。
但是,当我将名称从updated
更改为pubDate
时,它才能正常运行。 updated
或NSManagedObject
的标头中未声明NSObject
,因此我猜它必须是私有方法。
还有其他人经历过这个吗?我应该向Apple报告吗?
经过几个小时的头部刮伤/嘴巴愤怒后,我想出了这个。
答案 0 :(得分:7)
NSManagedObject
已经有一个名为isUpdated
的属性,当对象还有尚未提交的更改时,该属性设置为YES
。这是BOOL
值的getter的有效名称,因此Core Data不会对您的updated
属性执行任何操作。你应该重命名你的财产。
答案 1 :(得分:3)
如果您不能重命名属性,则可以在映射模型中将值表达式设置为FUNCTION($source, "updated")
。这将强制迁移使用名为“updated”的方法而不是更新的属性(例如[entity updated]
而不是entity.updated
)。
一般情况下,如果可能的话,我同意接受的答案,使用“更新”以外的名称。