核心数据迅速发展。应用程序丢失数据?

时间:2015-02-25 14:45:39

标签: ios swift core-data

我对我的应用工作方式感到困惑。 应用程序的主要部分是燃料填充日志和一些统计数据。它使用swift和核心数据。 但由于某些原因,有些设备有时会在应用关闭时丢失用户数据(而不是背景) - 我无法理解原因。此外,我无法在模拟器或我的设备上看到它。 但我的一些朋友报告了这个错误。

我的应用基于此示例http://jamesonquave.com/blog/core-data-in-swift-tutorial-part-3/

我的应用没有翻译成英文,所以我不知道可以在这里链接到它。

当用户关闭应用程序或重新加载设备时,核心数据是如何为空?

2 个答案:

答案 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的所有属性中保存值。在所有属性中保存数据后,重新启动应用程序时不会丢失数据。