2017-09-12 59 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. 您需要嘗試解決潛在的錯誤和可能的解決方案。例如,如果持久存儲已損壞或設備空間不足,告訴用戶強制退出應用程序不太可能有所幫助。 大多數保存錯誤將是在開發過程中出現的問題,如果您正在進行徹底測試。諸如驗證失敗或缺少所需值等。