Приложение застряло при инициализации Core Data.Как исправить? - PullRequest
0 голосов
/ 23 марта 2019

У меня есть AppService.swift со следующим кодом.

lazy var persistentContainer: NSPersistentContainer = {
    let container = NSPersistentContainer(name: "AppName")
    container.loadPersistentStores(completionHandler: { storeDescription, error in
        if let error = error as NSError? {
            self.log.error("Unresolved error \(error), \(error.userInfo)")
        }
    })
    return container
}()

func saveChannel(_ channel: Channel) {
    persistentContainer.performBackgroundTask { context in
        let _channel = JSChannel(context: context)
        _channel.desc = channel.desc
        if let ret = try? context.save() {
            self.log.debug("ret: \(ret)")
        }
    }
}

Я вызываю метод saveChannel и приложение зависает.Я добавил точку останова и ввел p NSPersistentContainer(name: "AppName") в отладчике, и он не завершает выполнение.Имя контейнера совпадает с xcdatamodelid.Я использую цель развертывания как 10.0 и Xcode 10.1.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 23 марта 2019

Я заработал, вызвав persistentContainer в главной очереди.

DispatchQueue.main.async {
    persistentContainer.performBackgroundTask { context in
    // ..
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...