为什么我不能将"description"用作Core Data实体的属性名称?

Aar*_*112 19 core-data ios

我有一个简单的Core Data实体,它有一个名为"description"的字符串属性.该程序在遇到时崩溃:

valueForKey:@"description"
Run Code Online (Sandbox Code Playgroud)

我将"description"属性更改为"text"并解决了问题.

为什么会这样?

"描述"是核心数据中保留的关键词吗?

它与从NSObject调用描述方法有关吗?

是否存在对这些保留关键词的引用?

小智 25

因为它与中的-description方法冲突NSObject(回想一下,Core Data动态生成属性访问器和mutators - 名为'description'的属性需要创建一个调用的访问器方法-description).这在" 核心数据编程指南"和" NSPropertyDescription类参考"中有记录:

请注意,属性名称不能与NSObject或NSManagedObject的任何无参数方法名称相同.例如,您不能为属性指定名称"description".NSObject上有数百个可能与属性名称冲突的方法 - 这个列表可以在没有框架或其他库的警告的情况下增长.你应该避免使用非常通用的单词(比如"font"和"color")以及与Cocoa范例重叠的单词或短语(例如"isEditing"和"objectSpecifier").