Подтвердить что ты не робот

Подкласс NSManagedObject с быстрыми 3 и Xcode 8 бета

Я начал использовать данные Core с быстрыми 3 и Xcode 8 бета-версиями. Когда я пытаюсь сгенерировать подклассы NSManagedObject из базовой модели данных и создать подкласс NSManagedObject... в редакторе, Xcode 8 beta генерирует три файла, один из которых _COREDATA_DATAMODELNAME _ + CoreDataModel.swift со следующим содержимым:

import Foundation
import CoreData

___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___

Кроме того, содержимое этого файла показывает два предупреждения:

Expressions are not allowed at the top level.
Use of unresolved identifier '___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___'

Есть ли какие-либо проблемы с тем же вопросом? В чем смысл этого нового файла?

Спасибо

4b9b3361

Ответ 1

Вероятно, это (бета) столкновение с новым автоматическим поколением подкласса, которое можно контролировать в инспекторе сущности файла модели данных.

Из документации (что нового в основных данных)

Генерация автоматического подкласса Xcode

Xcode теперь поддерживает автоматическую генерацию подклассов NSManagedObjectв инструменте моделирования. В инспекторе объектов:

  • Руководство/Нет - это значение по умолчанию и предыдущее поведение; в этом случае вы должен реализовать свой собственный подкласс или использовать NSManagedObject.
  • Категория/Расширение генерирует расширение класса в файле с именем like ClassName+CoreDataGeneratedProperties. Вам необходимо объявить/реализовать основной класс (если в Obj-C, через заголовок, расширение может импортировать named ClassName.h). -
  • Определение класса генерирует файлы подкласса с именем например ClassName+CoreDataClass, а также файлы, созданные для Категория /Extension.

Сгенерированные файлы помещаются в DerivedData и перестроен на первой сборке после сохранения модели. Они также индексируется по Xcode, поэтому нажатие клавиш на ссылки и быстрое открытие по имени файла работает.

Ответ 2

У меня есть аналогичные проблемы с этим разработчиком beta Xcode 8. Некоторые из них разрешили Command + S (сохранить изменения) до того, как я уйду из Data Model или перед созданием подклассов NSManagedObject. Я не знаю, почему, но в моем случае автоматическое сохранение не срабатывало и некоторые ошибки возникали.

Ответ 3

Я столкнулся с проблемой с указанным выше .swift файлом и обнаружил, что комментирование строки ___ COREDATA... привело меня к ошибке на данный момент. Я не уверен, что он должен выполнить.

Я также обнаружил, что XCODE 8 имеет тенденцию забывать о новых полях, которые добавляются к объектам CoreData, и повторно reset целевой код генерации кода модели CoreData для Objective C, что приводит к разрыву .h и. m файлов вместо быстрых файлов, когда он регенерирует файлы. Большинство проблем, которые я видел, связаны с CoreData, но до сих пор были работоспособными.

Кроме того, XCODE 8 был на удивление прочным, работая с приложением с 25 объектами данных и более 30 контроллерами представлений, поэтому я не жалуюсь.