Удобный метод с префиксом «is» приводит в замешательство CoreData - PullRequest
0 голосов
/ 07 июня 2018

У меня есть приложение Obj-C, которое использует CoreData.Модель включает в себя, среди прочего, следующие два объекта:

  • Note
  • QuestionnaireAnswer

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 и суперклассы не выявил никаких признаков непреднамеренных переопределений или несоответствий типов.

Кто-нибудь может пролить свет на это?

...