У меня есть приложение Obj-C, которое использует CoreData.Модель включает в себя, среди прочего, следующие два объекта:
A Note
имеет однозначныйодно отношение с QuestionnaireAnswer
(необязательно), такое, что Note
может существовать сам по себе или ассоциируется с QuestionnaireAnswer
.
Это работало отлично в течение многих лет, пока я недавно не добавил удобствометод на Note
:
-(BOOL)isQuestionnaireAnswer;
Все внезапные CoreData начали вести себя странно;при доступе к Note
QuestionnaireAnswer
, подобному этому, вскоре после вставки нового Note
в мой MOC:
questionnaireAnswer = [note questionnaireAnswer];
было выдано следующее исключение:
-[__NSCFBoolean entity]: unrecognized selector sent to instance
Казалось, что CoreData неправильно интерпретировал какой-то тип.После обширных копаний, регистрации и проб и ошибок я обнаружил, что простое переименование вспомогательного метода во что-то вроде:
-(BOOL)wasAddedAsQuestionnaireAnswer;
решит проблему.
Почему?! ?
Я знаю, что есть шаблон для получателей логического типа с префиксом "is
", который следует за фактическим именем свойства, но кажется, что CoreData на егособственные попытки и вывод типа на основе доступных методов или что-то.Я не могу найти ничего в документации CoreData, указывающей на зарезервированные имена / шаблоны имен.Кроме того, сброс всех методов и свойств на Note
и суперклассы не выявил никаких признаков непреднамеренных переопределений или несоответствий типов.
Кто-нибудь может пролить свет на это?