可能的核心数据错误:名为“更新”的属性无法正常工作?

时间:2009-06-11 09:48:51

标签: objective-c cocoa core-data

我有一个名为Post的核心数据实体。其中一个属性称为updated,它是一个日期。存储的XML如下所示:

<attribute name="updated" type="date">266164481.00000000000000000000</attribute>

由此我得出结论,数据正确存储。当我读回数据时,返回的值是NSCFNumber,而不是NSDate

但是,当我将名称从updated更改为pubDate时,它才能正常运行。 updatedNSManagedObject的标头中未声明NSObject,因此我猜它必须是私有方法。

还有其他人经历过这个吗?我应该向Apple报告吗?

经过几个小时的头部刮伤/嘴巴愤怒后,我想出了这个。

2 个答案:

答案 0 :(得分:7)

NSManagedObject已经有一个名为isUpdated的属性,当对象还有尚未提交的更改时,该属性设置为YES。这是BOOL值的getter的有效名称,因此Core Data不会对您的updated属性执行任何操作。你应该重命名你的财产。

答案 1 :(得分:3)

如果您不能重命名属性,则可以在映射模型中将值表达式设置为FUNCTION($source, "updated")。这将强制迁移使用名为“updated”的方法而不是更新的属性(例如[entity updated]而不是entity.updated)。

一般情况下,如果可能的话,我同意接受的答案,使用“更新”以外的名称。