Ios 如何调试核心数据未解决错误(null),(null)
当我尝试保存核心数据时,我在控制台中得到: 未解决的错误(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打开调试并没有为我
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();
}
}
}