代码之家  ›  专栏  ›  技术社区  ›  trapper

如何处理CoreData保存错误?

  •  0
  • trapper  · 技术社区  · 9 年前

    不幸的是,这导致了很多 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 回复  |  直到 9 年前
        1
  •  0
  •   Tom Harrington    9 年前

    这将用于通知用户保存错误。但有几件事需要记住:

    1. 中的消息 saveError
    2. 你需要尝试找出潜在的错误和可能的解决方案。例如,如果永久存储已损坏或设备空间不足,告诉用户强制退出应用程序可能没有帮助。 如果您正在彻底测试,那么在开发过程中会出现保存错误。验证失败或缺少所需值等。