什么会导致错误返回null,这就是我所拥有的
+ (BOOL)saveContext:(NSManagedObjectContext *)context
{
NSError *error = nil;
if (![context save:&error])
{
DLog(@"ERROR %@, %@", error, [error userInfo]);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sorry"
message:@"Error Saving the Data"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
return NO;
}
return YES;
}
上面的方法是一个类方法,我不知道为什么错误没有任何信息。
这个方法就像这样调用
[HSCoreDataUtility saveContext:self.managedObjectContext];
当一个modalViewController关闭并返回到NavigationController时,我需要保存上下文,但它通过一个错误,现在我想我已经知道它没有被保存的原因,但是不应该这个错误给了我一个线索?但是日志只是说“ERROR(null),(null)”
任何想法
答案 0 :(得分:8)
我忍受了痛苦并最终幸存下来。 ;)
经过长时间的调试,我在自定义对象验证方法中意识到,在某些情况下我返回NO并且没有初始化错误。
如果您有此问题,请检查验证对象方法。 这也许是你的问题。
答案 1 :(得分:7)
只有当你传递nil
上下文时,我才能看到发生这种情况。我会在该类方法的顶部放置一个逻辑炸弹来防范这种情况。
实际上,我不会为这么少的代码创建一个类方法;但问题仍然存在。检查nil
上下文。
答案 2 :(得分:1)
这是一个非常古老的主题,但希望我的回复可以帮助那些在Google上发现这一点的人。我遇到了同样的问题,这些答案都不是我的问题;事实证明,当我更改数据模型时,我犯了一个非常愚蠢,愚蠢的错误,即没有删除/重新安装应用程序,因此保存失败而没有错误。检查以确保你不做同样的事情! :)
答案 3 :(得分:0)
嗯,我不确定%@会导致错误变得冗长。 [error localizedDescription]
?
答案 4 :(得分:0)
我碰巧遇到了这个问题,经过很长时间的调试我发现它是因为NSError *错误的重复声明,你可能在外部作用域中有另一个NSError *错误,如:
NSError* error = nil;
// some code
if (!error)
{
NSError* error = nil;
// your code
}
然后错误将为零,尽管实际上存在异常。