我有一个使用CoreData的Obj-C应用程序。该模型包括以下两个实体:
Note
QuestionnaireAnswer
Note
与QuestionnaireAnswer
(可选)具有一对一的关系,因此Note
可以单独存在,或者与{{1}相关联}}
这项工作多年来一直很好,直到我最近在QuestionnaireAnswer
上添加了便利方法:
Note
所有突然的CoreData开始表现得很奇怪;在我的MOC中插入新的-(BOOL)isQuestionnaireAnswer;
后不久,在访问Note
QuestionnaireAnswer
这样的Note
时:
questionnaireAnswer = [note questionnaireAnswer];
抛出了以下异常:
-[__NSCFBoolean entity]: unrecognized selector sent to instance
似乎CoreData错误地解释了某些类型。经过大量的挖掘,记录和反复试验后,我发现只需将便捷方法重命名为:
-(BOOL)wasAddedAsQuestionnaireAnswer;
可以解决问题。
为什么?!
我知道布尔型吸气剂的前缀是" is
"遵循实际的属性名称,但似乎CoreData自己尝试并根据可用的方法或其他东西推断出类型。我在CoreData文档中找不到任何指示保留名称/命名模式的内容。此外,转储Note
和超类上的所有方法和属性并未显示任何意外覆盖或类型不匹配的迹象。
有人能说清楚这个吗?