2017-09-12 74 views
0

避免数据丢失是我的应用程序中的一个关键问题。所以我需要提前保存并经常保证最小的损失,并在出现问题时立即通知。如何处理CoreData保存错误?

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

现在,我可以在一个更一般的方式监听通知,并抛出一个警告用户如果由于某种原因保存失败。

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

第二个问题是实际发生的情况。要求用户退出应用程序并重新启动有点复杂,因为他们需要通过任务切换器关闭应用程序。

回答

0

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

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