"" -prefixed方法混淆CoreData

时间:2018-06-07 09:58:58

标签: objective-c core-data methods nsmanagedobject objective-c-runtime

我有一个使用CoreData的Obj-C应用程序。该模型包括以下两个实体:

  • Note
  • QuestionnaireAnswer

NoteQuestionnaireAnswer(可选)具有一对一的关系,因此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和超类上的所有方法和属性并未显示任何意外覆盖或类型不匹配的迹象。

有人能说清楚这个吗?

0 个答案:

没有答案