Добавление метода в файл, сгенерированный Xcode 10 Core Data - PullRequest
0 голосов
/ 22 апреля 2019

На этот вопрос, вероятно, есть ответ в другом месте, но я нашел ответы только для устаревших версий Xcode или проектов, использующих Swift.

Я использую Xcode 10 и читаю Программирование на iOS The Big NerdРуководство по ранчо, 4-е издание .Я использую такую ​​старую версию, потому что это ресурс, который мне предоставил моя работа.

В настоящее время я пытаюсь добавить метод в класс, сгенерированный CoreData для Objective-C.

Если для CodeGen задано значение Категория / Расширение, а в CoreData выбрана моя сущность, сгенерированные файлы классов:

  • BNRItem+CoreDataProperties.h/m
  • BNRItem+CoreDataClass.h/m

BNRItem+CoreDataClass.h включает BNRItem+CoreDataProperties.h, а BNRItem+CoreDataProperties.h включает BNRItem.h (который не существует).Я предполагаю, что мне нужно создать BNRItem.h, но я не знаю, какой файл импортировать в BNRItem.h, так как BNRItem+CoreDataProperties.h или BNRItem+CoreDataClass.h могут создать циклический цикл включения.

В каком файле я добавляю метод экземпляра в сгенерированный класс CoreData для Objective-C в Xcode 10?

Ответы [ 4 ]

0 голосов
/ 23 апреля 2019

А как насчет того, чтобы оставить параметр генерации кода на Class Definition и создать расширение (категорию в Objective-C) вашей сущности?

0 голосов
/ 22 апреля 2019

Соглашение заключается в использовании @class в файле .h и #import в файле .m, за исключением случаев, когда в файле .h необходим #import.Последнее происходит при обращении к суперклассу или протоколу.

Идея состоит в том, чтобы ускорить перекомпиляцию.Если ClassA.h импортирует ClassB.m, а вы изменяете только ClassB.m во время разработки, то потому что ClassA.m импортирует ClassA.h, который импортирует ClassB.m, ClassA.m необходимо будет перекомпилировать во время следующей сборки, даже если этобез изменений.

Конечно, все это уходит в Swift:)

0 голосов
/ 22 апреля 2019

Это, вероятно, не фактический ответ, но я исправил это, изменив CodeGen на Manual / None и отредактировав сгенерированные файлы.

0 голосов
/ 22 апреля 2019

Оператор #import был введен для разрешения циклических зависимостей, создаваемых #include.Так что это не имеет большого значения, если вы используете #import, но если вы по-прежнему обеспокоены, вы также можете использовать @class предварительное объявление

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...