Ios 如何调试核心数据未解决错误(null),(null)

Ios 如何调试核心数据未解决错误(null),(null),ios,objective-c,cocoa-touch,core-data,Ios,Objective C,Cocoa Touch,Core Data,当我尝试保存核心数据时,我在控制台中得到: 未解决的错误(null),(null) 当NSError对象为nil时,很难调试这个问题 我该怎么做才能获得更多有用的信息?为什么保存操作不成功?这确实很奇怪。它是可复制的吗?它是发生在设备上还是发生在模拟器上?@MartinR确实,它发生在模拟器和设备上,并且是可复制的。有一些想法:1)设置-com.apple.CoreData.SQLDebug 3启动参数以启用调试输出。-2) 检查系统消息(如果在模拟器中运行)。@MartinR打开调试并没有为我

当我尝试保存核心数据时,我在控制台中得到:

未解决的错误(null),(null)

NSError
对象为
nil
时,很难调试这个问题


我该怎么做才能获得更多有用的信息?为什么保存操作不成功?

这确实很奇怪。它是可复制的吗?它是发生在设备上还是发生在模拟器上?@MartinR确实,它发生在模拟器和设备上,并且是可复制的。有一些想法:1)设置
-com.apple.CoreData.SQLDebug 3
启动参数以启用调试输出。-2) 检查系统消息(如果在模拟器中运行)。@MartinR打开调试并没有为我透露任何“美味”的细节,没有任何东西可以让我知道为什么保存不起作用。我还能试什么?我尝试过删除应用程序、清理、重置模拟器、重新启动Xcode/simulator。最后一种方法是“系统调用跟踪”:
dtruss-p
(作为root),应用程序的pid在模拟器中运行(使用
ps-ef | grep
查找pid)。将会有很多输出,但是如果你运气好的话,你会发现一些失败的系统调用将你引向正确的方向。
- (void)saveInManagedObjectContext:(NSManagedObjectContext *)context {

    if (context == nil) {

        // Use default MOC
        context = self.managedObjectContext;

        NSError *error = nil;

        if ([context hasChanges] && ![context save:&error])
        {
            /*
             Replace this implementation with code to handle the error appropriately.

             abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
             */
            DLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        }

    }
}