managedObjectContext save失败,错误为null

时间:2010-11-09 19:11:52

标签: iphone core-data ios nsmanagedobjectcontext

什么会导致错误返回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)”

任何想法

5 个答案:

答案 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
}

然后错误将为零,尽管实际上存在异常。