Core data -[NSCFDictionary initWithObjects:forKeys:count:]:尝试在对象[0]处插入nil值(键:sourceRelationship)

Core data -[NSCFDictionary initWithObjects:forKeys:count:]:尝试在对象[0]处插入nil值(键:sourceRelationship),core-data,crash,migration,persistent-storage,Core Data,Crash,Migration,Persistent Storage,我和这个人度过了一个非常糟糕的夜晚。自从我必须快速更新以来,我一直在iOS 5.0上运行和测试我的代码。。我有安装问题,所以4.3模拟器直到最近才对我可用。我(以为我已经)解决了我所有的轻量级核心数据迁移问题。今晚,我在4.3模拟器和运行4.3的iPad上运行了这个应用程序。我的发现很糟糕 每次出现此错误时: 2011-10-27 07:01:44.045 AppName[924:10d03]*由于以下原因终止应用程序 未捕获异常“NSInvalidArgumentException”,原因:'

我和这个人度过了一个非常糟糕的夜晚。自从我必须快速更新以来,我一直在iOS 5.0上运行和测试我的代码。。我有安装问题,所以4.3模拟器直到最近才对我可用。我(以为我已经)解决了我所有的轻量级核心数据迁移问题。今晚,我在4.3模拟器和运行4.3的iPad上运行了这个应用程序。我的发现很糟糕

每次出现此错误时:

2011-10-27 07:01:44.045 AppName[924:10d03]*由于以下原因终止应用程序 未捕获异常“NSInvalidArgumentException”,原因:'* -[NSCFDictionary initWithObjects:forKeys:count:]:尝试在对象[0](键:sourceRelationship)处插入nil值 *第一次抛出时调用堆栈:(0 CoreFoundation 0x018655a9异常预处理+185 1 libobjc.A.dylib
0x01a66313 objc_异常_抛出+44 2 CoreFoundation
0x017aedcb-[\uuu NSPlaceholderDictionary initWithObjects:forKeys:count:] +587 3 CoreFoundation 0x017c76da+[NSDictionary Dictionary WithObject:forKey:+74 4 CoreData 0x0135bdea-[\u NSSQLTableMigrationDescription] AppendStatementStopRepearFormigation:migrationContext:+1178 5
CoreData 0x01357254 -[\u NSSQLiteStoreMigrator createEntityMigrationStatements]+356 6 CoreData 0x01356246 -[\u NSSQLiteStoreMigrator性能迁移:][86 7 CoreData 0x0135c78f-[NSSQLiteInPlaceMigrationManager migrateStoreFromURL:type:options:withMappingModel:toDestinationURL:destinationType:destinationOptions:error:] +1039 8 CoreData 0x013414ca-[NSStoreMigrationPolicy(InternalMethods)MigrateStoreToUrl:toURL:storeType:options:withManager:error:+1549 CoreData 0x01342052 -[NSStoreMigrationPolicy MigrateStoreUrl:withManager:元数据:选项:错误:][146 10 CoreData 0x01342f83 -[NSStoreMigrationPolicy(InternalMethods)\收集数据并执行迁移:+1315 11核心数据0x01256aec-[NSPersistentStoreCoordinator] addPersistentStoreWithType:configuration:URL:options:error:+2412 12 AppName 0x0007aae7 -[AppDelegate persistentStoreCoordinator]+791 13 AppName 0x0007a621 -[AppDelegate managedObjectContext]+97 14 AppName 0x0007c3cd-[AppDelegate getSettings]+125 15 AppName
0x00078160-[BagAppDelegate刷新设置]+48 16 AppName 0x00077cd7 -[AppDelegate应用程序:didFinishLaunchingWithOptions:+391 17 UIKit 0x00409c89 -[UIApplication\u CallInitializationDelegatesForRL:payload:suspended:+1163 18 UIKit 0x0040bd88-[UIApplication\u runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:+439 19 UIKit 0x00416617-[UIApplication handleEvent:withNewEvent:]+1533 20 UIKit 0x0040eabf-[UIApplication sendEvent:+71 21 UIKit
0x00413f2e\u UIApplicationHandleEvent+7576 22图形服务
0x01f03992 PurpleEventCallback+1550 23 CoreFoundation
0x01846944\uuu CFRUNLOOP\u正在调用\u OUT\u到\u SOURCE1\u PERFORM\u函数
+52 24 CoreFoundation 0x017a6cf7__CFRunLoopDoSource1+215 25 CoreFoundation 0x017a3f83__CFRUNLOOPDOSURCE+979 26 CoreFoundation
0x017a3840 CFRunLoopRunSpecific+208 27核心基础
0x017a3761 CFRUNLOOPSRUNINMODE+97 28 UIKit
0x0040b7d2-[UIApplication\u run]+623 29 UIKit
0x00417c93 UIApplicationMain+1160 30应用程序名
0x0000232d main+125 31 AppName
0x000022a5启动+53

当我设置persistentStoreCoordinator时,这里显示了错误:

NSError *error;
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
    // Update to handle the error appropriately.
    NSLog(@"App Delegate - persistentStoreCoordinator Save Error %@, %@", error, [error userInfo]);
    exit(-1);  // Fail
}  
return persistentStoreCoordinator;
我很确定后一种代码是可以的——我从来没有遇到过任何问题

这个错误显然与轻量级迁移有关,我一生都搞不清楚是什么原因。我坐在这里哭了几个小时(但我是个女孩,所以没关系..jk),似乎什么都不起作用,我也没有从谷歌搜索中得到任何好的信息

我不是在更新现有的应用程序,只是在出现这种情况时尝试安装一个新的应用程序

我真的非常需要帮助,通常我知道该做什么,但我现在在太空中迷失了方向。提前谢谢你的帮助


编辑:认为这可能与修复磁盘权限有关。不起作用。似乎映射模型有问题。我想它可能是自动创建的,因为我没有创建任何映射模型。

这不是一个真正的答案,但您可以考虑一些事情来尝试跟踪问题:

  • 调用时,
    storeURL
    options
    的值是否正确

  • 当您发生崩溃时,迁移是否真的会发生?(即,数据库是否处于当前模型之前的状态)?当您从空数据库开始时,是否会发生崩溃


  • 您有多少个型号?您是否可以删除一些型号,以尝试找出导致问题的型号


我很确定您已经验证了这一点,但是调用时
storeURL
options
的值是否正确?是什么让您认为错误与轻量级迁移有关?@edsko,是的,这段代码已经在许多不同的设备甚至操作系统上运行了数月(5.0升级之前的4.3版本)。我将发布上述错误消息的其余部分,以说明我的原因