Objective c 可能的核心数据错误:名为';更新';don';你不能正常工作吗?
我有一个名为Objective c 可能的核心数据错误:名为';更新';don';你不能正常工作吗?,objective-c,cocoa,core-data,Objective C,Cocoa,Core Data,我有一个名为Post的核心数据实体。它的一个属性叫做updated,它是一个日期。存储的XML如下所示: <attribute name="updated" type="date">266164481.00000000000000000000</attribute> 266164481.00000000000000 由此我得出结论,数据存储正确。当我读回数据时,返回的值是NSCFNumber,而不是NSDate 但是,当我将名称从updated更改为pubDate时,
Post
的核心数据实体。它的一个属性叫做updated
,它是一个日期。存储的XML如下所示:
<attribute name="updated" type="date">266164481.00000000000000000000</attribute>
266164481.00000000000000
由此我得出结论,数据存储正确。当我读回数据时,返回的值是NSCFNumber
,而不是NSDate
但是,当我将名称从updated
更改为pubDate
时,它工作正常updated
没有在NSManagedObject
或NSObject
的标题中声明,因此我猜它一定是一个私有方法
还有其他人经历过吗?我应该向苹果公司报告吗
经过几个小时的挠头/口臭愤怒后,我发现了这一点。
NSManagedObject
已经有一个名为的属性,当对象有尚未提交的更改时,该属性设置为YES
。这是BOOL
值的getter的有效名称,因此核心数据对更新的
属性没有任何作用。您应该重命名属性。如果您不能重命名属性,可以在映射模型中将值表达式设置为函数($source,“updated”)
。这将强制迁移使用名为“updated”的方法,而不是更新的属性(例如,[entity updated]
而不是entity.updated
)
不过,总的来说,如果可能的话,我同意接受的答案,使用“更新”以外的名称。在核心数据中应该避免使用的名称列表请参见此处:我没有意识到Cocoa检查了带有“is”前缀的方法。我想它只是检查了名为key和'set'+key的方法。有关这些详细信息,请参阅《键值编码编程指南》:注意,在Cocoa约定下,-updated对于此类属性可能不是一个很好的名称。考虑数据更新或更新日期