, Это также относится к соединению типов Swift с эквивалентными типами Foundation.

челСоздание подклассов NSManagedObject с помощью swift 3 и Xcode 8 beta и читатьэто отличный учебник. Еще есть вопросы по некоторым пунктам.

Сходства:Я могу настроить оба класса, как мне нравится.Я могу добавить новые атрибуты или удалить или переименовать атрибуты. то есть дляcategory/extension он будет обновляться после новой сборки (в производных данных) и в случаеmanual/none он оставит файл класса без изменений и обновит расширение в файловой навигации, т.е. я не получу дубликат файла. Все это обрабатывается Xcode, потому что они помечены препроцессором@NSManagedСбрасывать что-то вроде@NSManaged public var name: String? прямо в существующийNSManagedObject Подкласс не допускается. Я пытался сделатьentity.name = "John" но я получил следующую ошибку:reason: '-[SomeEntity setName:]: unrecognized selector sent to instance 0x60400009b120', Я считаю, что это разумно. Я думаю, что без использования Core Data Model Editor методы доступа метода установки / получения не создаются.Различия:ЗаCategory/Extension вам просто нужно создать класс самостоятельно и добавить любые дополнительные функции / свойства, которые вам нужны.

ЗаCategory/Extension атрибуты создаются в производных данных, что достаточно. Потому что вам никогда не нужно видеть этот файл. Его существования достаточно, чтобы все заработало.

И конкретно в контексте созданияизменения в ваши NSManaged свойства:

Изменение типа собственности, напримерNSDate вDate разрешено только дляManual/None , примерВот

Изменение опциональности типа, напримерString? вString разрешено только дляManual/None, примерВот

Изменение уровня доступа к свойству, например, изpublic вprivate разрешено только дляManual/None, примерВот

Сказав, что есть существенная разницаесли я выбираюManual/None кодеген и ноне выберите «создать подкласс NSManagedObject». В этом случае я сам начинаю писать весь код (подкласс от NSManagedObject и пишу NSManaged для каждого свойства) ... или, если я сам не пишу весь этот код, я все равно могу получить доступ к / установить поля, используя KVC, что неудобно!

Короче говоря, я просто пытаюсь выяснить весь спектр возможностей, которые я могу получить от использованияManual/None.

Вопрос: Помимо 9Примечания что мне нужно знать, правильно ли я проверил, важныйвопрос будет: как я меняюсьNSDate вDate или необязательный, чтобы не необязательный, чтобы не нарушать отображения между моим классом NSManagedObject и моим графом объектов во время измененияNSDate собственность наString ломается !! Имеет ли это какое-то отношение к вещам, которые гарантированно приводят между Swift и Objective-C, то есть к вещам, которые можно кастоватьas - без? или же!?

Ответы на вопрос(1)

Ваш ответ на вопрос