CoreData не генерирует NSManagedObject для Swift 3

Генерация кода CoreData не создает подкласс NSManagedObject для swift3, например: он создает свойства NSDate вместо Date. Любая идея, как я могу генерировать модели для Swift3?

Примечание. Я не нашел ничего в настройках CoreData генерации кода для явного переключения языка на Swift 3, но мы можем генерировать Swift модели. Но есть некоторые классы, которые были обновлены в Swift 3.


person Umair Aamir    schedule 09.05.2017    source источник
comment
Выберите файл модели в навигаторе, выберите объект, нажмите ⌥⌘1 и проверьте, установлено ли для параметра Генерация кода › Язык значение Swift.   -  person vadian    schedule 09.05.2017
comment
Язык генерации кода установлен на Swift, но мой вопрос: почему CodeGen преобразует все свойства Date в NSDate?   -  person Umair Aamir    schedule 09.05.2017
comment
Я знаю, но я подозревал, что Xcode сгенерировал классы Objective-C.   -  person vadian    schedule 09.05.2017
comment
Если я правильно понял, я думаю, что речь идет о разных конфигурациях генерации кода. Правильно?   -  person Umair Aamir    schedule 09.05.2017
comment
Тем не менее просто измените тип вручную. Вы также можете изменить NSNumber на связанные с Swift типы Bool, Int32 и т. д.   -  person vadian    schedule 09.05.2017


Ответы (1)


Многие типы свойств по-прежнему используют подклассы NSObject. Скорее всего, вам придется конвертировать их вручную.

В частности, для NSDate вы можете использовать:

return (date as NSDate?) ?? nil

и

return (date as Date?) ?? nil

Для упрощения использования вы можете создать расширения для Date и NSDate, чтобы возвращать значения приведения типов так, как вы этого хотите. Альтернативой является изменение полей даты в базе данных на что-то вроде rawDate, а затем создание свойства date, которое переопределяет как установщик, так и получатель и выполняет преобразование в/из исходного свойства rawDate.

В любом случае эти объекты не исключены из Swift 3, они просто заменены более новыми типами в большинстве API.

person Matic Oblak    schedule 09.05.2017