Éviter la perte de données est un problème critique dans mon application. J'ai donc besoin d'épargner tôt et souvent pour assurer une perte minimale et une notification immédiate en cas de problème.Comment gérer les erreurs d'enregistrement CoreData?
Malheureusement, il en résulte beaucoup de if (![context save:&error]) {
de manutention partout. Pour nettoyer ce d'une façon plus centralisée je pensais à mettre en œuvre une catégorie NSManagedObjectContext avec un tel procédé:
- (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;
}
Maintenant, je peux écouter de la notification d'une manière plus générale et jeter une alerte à l'utilisateur si la sauvegarde a échoué pour une raison quelconque.
Est-ce une bonne approche ou existe-t-il une meilleure façon de gérer cela?
Un problème secondaire est ce qu'il faut réellement faire quand cela se produit. Demander à l'utilisateur de quitter l'application et de redémarrer est un peu compliqué ces jours-ci car ils doivent fermer l'application via le sélecteur de tâches.