Ответ 1
Исходя из того, что ошибка a save
не должна появляться в производстве, мой лучший совет - следовать аналогичной схеме.
NSError *error = nil;
if ([self.managedObjectContext save:&error] == NO) {
NSAssert(NO, @"Save should not fail");
[self showAlert];
}
- (void)showAlert {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Could Not Save Data"
message:@"There was a problem saving your data but it is not your fault. If you restart the app, you can try again. Please contact support ([email protected]) to notify us of this issue."
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];
}
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
abort();
}
Кредиты идут на Matthew Morey, как описано в NSManagedObjectContext save error.
Мне очень нравится этот подход, поскольку он информирует пользователя о том, что произошло что-то плохое. В дополнение к этому я также создам файл журнала, который можно отправить по электронной почте для поддержки. В журнале вы ставите много информации, чтобы исследовать ошибку. Для этого, например, вы можете использовать CocoaLumberjack. Посмотрите также Журналы рассылки по NSSCreenCast.