Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 可能的核心数据错误:名为';更新';don';你不能正常工作吗?_Objective C_Cocoa_Core Data - Fatal编程技术网

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对于此类属性可能不是一个很好的名称。考虑数据更新或更新日期