Обновлены ли основные атрибуты модели данных? - PullRequest
0 голосов
/ 26 июня 2019

После создания обновленной версии модели данных и добавления только нескольких новых атрибутов к одному объекту я не могу получить доступ к новым атрибутам в моих файлах контроллера быстрого просмотра.

В Xcode 10 для iOS 12 я изменил выбранную модель Core Data на обновленную версию. Насколько я понимаю, легкая миграция уже включена по умолчанию. Кажется, это отражается в моих сообщениях консоли, когда я выполняю запрос на выборку, который показывает новые атрибуты. Однако я не могу получить доступ к новым атрибутам в коде в моих файлах swift контроллера представления. Я попытался добавить «истинные» флаги в MigrateStoreAutomatics и InferMappingModuleAutomatics в моем классе стека базовых данных NSPersistantStoreDescription, но все еще не могу получить доступ к новому атрибуту в коде.

// ATTEMPT @ ENABLING LIGHT MIGRATION IN CORE DATA
    lazy var storeDescription: NSPersistentStoreDescription = {
        let description = NSPersistentStoreDescription()
        description.shouldMigrateStoreAutomatically = true
        description.shouldInferMappingModelAutomatically = false
        return description
    }()

    lazy var persistentContainer: NSPersistentContainer = {

        let container = NSPersistentContainer(name: "123ABC")

        container.loadPersistentStores(completionHandler: { (storeDescription, error) in

            if let error = error as NSError? {
                fatalError("Unresolved error \(error), \(error.userInfo)")
        }
    })
        return container
}()



// CODE IN SWIFT VIEW CONTROLLER TRYING TO ACCESS NEW ATTRIBUTE
    var selectedTextPhrase: TextPhrase!

        self.selectedTextPhrase.imageURL = "WHAT HAPPENED TO MIGRATION?"
        self.selectedTextPhrase.favorite = true

Значение типа 'TextPhrase?' не имеет члена imageURL - это сообщение, которое я получаю.

"imageURL" - это новый необязательный атрибут, который я добавил к сущности и который является строкой. Атрибут «favourite» является логическим и уже существующим атрибутом из предыдущей версии модели Core Data. Я могу получить доступ к атрибуту «любимый», а не к «imageURL». При вводе кода «imageURL» не появляется опция автозаполнения, как это делают исходные атрибуты сущности из исходной модели Core Data.

1 Ответ

0 голосов
/ 27 июня 2019

Я разобрался в проблеме. Файлы Swift, созданные в XCode для каждой из моих сущностей, не обновлялись после того, как я добавил новые атрибуты в существующие сущности. Я вручную отредактировал файлы и добавил объявления для своих новых атрибутов, и теперь он работает как положено. Надеюсь, это спасет кого-то еще в той же ситуации от разочарования и времени.

...