почему основные данные очищаются, когда приложение перезапускается в Swift? - PullRequest
2 голосов
/ 13 марта 2019

Я использую базовые данные в качестве локальной БД для сохранения локальных данных в моем приложении для iOS. Когда приложение завершается и перезапускается снова, локальные данные очищаются от основных данных. Я звоню saveContext () из applicationDidEnterBackground и applicationWillTerminate методов. Во-первых, я изменил версию основных данных. Это изменение повлияет на чистые данные после перезапуска приложения.

Метод saveContext -:

func saveContext () -> Bool {
        let context = persistentContainer.viewContext
        var saveFlag = false
        if context.hasChanges {
            do {
                try context.save()
                saveFlag = true
            } catch {
                saveFlag = false
                let nserror = error as NSError
                fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
            }
        }
        return saveFlag
    }

Примечание: Сверху метод saveContext (), Not не входит в условие context.hasChanges. Таким образом, не печатать сообщение об ошибке. Он выходит за пределы условия и возвращает saveFlag как false.

1 Ответ

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

var appDel:AppDelegate = UIApplication.shared.delegate as! AppDelegate

        let context = appDel.persistentContainer.viewContext
        var saveFlag = false
        if context.hasChanges {
            do {
                try context.save()
                saveFlag = true
            } catch {
                saveFlag = false
                let nserror = error as NSError
                fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
            }
        }
        return saveFlag
    }```

Please try the above code
...