如何处理CoreData保存错误?

时间:2017-09-12 03:27:22

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

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

不幸的是,这会导致很多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;
}

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

这是一个好方法还是有更好的方法来解决这个问题?

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

1 个答案:

答案 0 :(得分:0)

用于通知用户保存错误。但要记住以下几点:

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