Nik*_* M. 14 core-data objective-c ios
在我的应用程序中,由于此核心数据保存错误处理代码,我收到了一堆SIGABRT崩溃报告(来自特定用户):
NSError *error = nil;
if (![moc save:&error])
{
if(error)
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
Run Code Online (Sandbox Code Playgroud)
有没有比使用abort()终止进程更好的方法来处理核心数据保存错误?
基于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 (support@domain.com) to notify us of this issue."
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];
}
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
abort();
}
Run Code Online (Sandbox Code Playgroud)
如NSManagedObjectContext保存错误中所述,积分转到Matthew Morey.
我真的很喜欢这种方法,因为它告诉用户发生了一些不好的事情.除此之外,我还将创建一个日志文件,可以通过电子邮件发送给支持人员.在日志中,您将提供尽可能多的信息来调查错误.例如,要实现这一点,您可以使用CocoaLumberjack.另请参阅NSSCreenCast的邮件日志.
归档时间: |
|
查看次数: |
6460 次 |
最近记录: |