, Это также относится к соединению типов 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
- без?
или же!
?