我对我的应用工作方式感到困惑。 应用程序的主要部分是燃料填充日志和一些统计数据。它使用swift和核心数据。 但由于某些原因,有些设备有时会在应用关闭时丢失用户数据(而不是背景) - 我无法理解原因。此外,我无法在模拟器或我的设备上看到它。 但我的一些朋友报告了这个错误。
我的应用基于此示例http://jamesonquave.com/blog/core-data-in-swift-tutorial-part-3/。
我的应用没有翻译成英文,所以我不知道可以在这里链接到它。
当用户关闭应用程序或重新加载设备时,核心数据是如何为空?
答案 0 :(得分:3)
您是否在主要托管对象上下文中调用了save方法?
在Xcode projet模板中,有一个方法在应用程序终止时调用,应保存:
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
// Saves changes in the application's managed object context before the application terminates.
[self saveContext];
}
由于某些原因,此saveContext方法可能失败或未被调用。在这种情况下,如果您从未保存过上下文,则数据库可能为空。
例如,在managedObjectContext中插入或更新数据后,您可以调用:
NSError *error = nil
[self.managedObjectContext save:&error];
答案 1 :(得分:-1)
最近,即使在self.saveContext()
的{{1}}方法中使用applicationWillTerminate
,我也面临着同样的问题,我发现我并没有在Entity的所有属性中保存值。在所有属性中保存数据后,重新启动应用程序时不会丢失数据。