Objective c &引用;是"-带前缀的便利方法会混淆CoreData
我有一个使用CoreData的Obj-C应用程序。该模型包括以下两个实体:Objective c &引用;是"-带前缀的便利方法会混淆CoreData,objective-c,core-data,methods,nsmanagedobject,objective-c-runtime,Objective C,Core Data,Methods,Nsmanagedobject,Objective C Runtime,我有一个使用CoreData的Obj-C应用程序。该模型包括以下两个实体: 注意 QuestionnaireAnswer 注释与问题回答者(可选)具有一对一的关系,因此注释可以独立存在,或者与问题回答者关联 多年来,这种方法一直运行良好,直到最近我在Note上添加了一种方便的方法: -(BOOL)isQuestionnaireAnswer; CoreData突然开始表现出奇怪的行为;在我的MOC中插入新的注释后不久,访问注释的问题回答时,如下所示: questionnaireAnswer
注意
QuestionnaireAnswer
注释
与问题回答者
(可选)具有一对一的关系,因此注释
可以独立存在,或者与问题回答者
关联
多年来,这种方法一直运行良好,直到最近我在Note
上添加了一种方便的方法:
-(BOOL)isQuestionnaireAnswer;
CoreData突然开始表现出奇怪的行为;在我的MOC中插入新的注释后不久,访问注释的问题回答时,如下所示:
questionnaireAnswer = [note questionnaireAnswer];
引发了以下异常:
-[__NSCFBoolean entity]: unrecognized selector sent to instance
CoreData似乎错误地解释了某些类型。经过广泛的挖掘、记录和反复试验,我发现简单地将便利方法重命名为:
-(BOOL)wasAddedAsQuestionnaireAnswer;
这将解决问题
为什么我试图重现这一点,但在我的测试应用程序中,isQuestionnaireAnswer
没有从[注意questionnaireAnswer]
调用。它是从-[Note setQuestionnaireAnswer:
或[QuestionnaireAnswer setNote:
调用的。回溯显示它是KVO:。谢谢@Willeke对它的调查,KVO看起来确实是一个非常合理的原因!