【问题标题】:How to deal with CoreData save errors?如何处理 CoreData 保存错误?
【发布时间】:2018-02-20 09:17:45
【问题描述】:

避免数据丢失是我的应用程序中的一个关键问题。因此,我需要尽早并经常进行保存,以确保将损失降至最低,并在出现任何问题时立即通知。

不幸的是,这导致了很多if (![context save:&error]) { 处理无处不在。为了以更集中的方式清理它,我想用这样的方法实现一个 NSManagedObjectContext 类别:

- (BOOL)saveNotify:(NSError **)error
{
    NSError *saveError;
    if (![self save:&saveError]) {

        NSDictionary *userInfo = @{@"error" : saveError};

        [NSNotificationCenter.defaultCenter postNotificationName:NSManagedObjectContextSaveErrorNotification object:self userInfo:userInfo];

        if (error != NULL) *error = saveError;

        return NO;
    }
    return YES;
}

现在我可以以更通用的方式收听通知,并在保存由于某种原因失败时向用户发出警报。

这是一个好方法还是有更好的方法来处理这个问题?

次要问题是当这种情况发生时实际该怎么做。现在要求用户退出应用程序并重新启动有点令人费解,因为他们需要通过任务切换器关闭应用程序。

【问题讨论】:

    标签: ios objective-c core-data error-handling


    【解决方案1】:

    这将用于通知用户保存错误。但有几点需要牢记:

    1. saveError 中的消息可能无法为用户所理解。你可能不应该展示它。相反,请查看错误代码和域,并尝试提出更有意义的内容。
    2. 您需要尝试找出潜在的错误和可能的解决方案。告诉用户强制退出应用程序不太可能有帮助,例如,如果持久存储已损坏或设备空间不足。如果您进行彻底的测试,大多数保存错误将是在开发过程中出现的问题。诸如验证失败或缺少必需值之类的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 1970-01-01
      • 2020-10-08
      • 2016-12-14
      • 2017-03-28
      • 1970-01-01
      • 2015-12-13
      相关资源
      最近更新 更多