繁体   English   中英

如何处理CoreData保存错误?

[英]How to deal with CoreData save errors?

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

不幸的是,这会导致很多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. 用户可能无法理解saveError的消息。 您可能不应该提出。 相反,请查看错误代码和域,并尝试提出更有意义的内容。
  2. 您需要尝试找出潜在的错误和可能的解决方案。 例如,如果持久性存储已损坏或设备空间不足,告诉用户强制退出该应用程序将无济于事。 如果您进行了彻底的测试,则大多数保存错误将是开发期间出现的问题。 诸如验证失败或缺少必需值之类的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM