managedObjectModel为nil(无法使用nil模型创建NSPersistentStoreCoordinator)
我有这种特殊情况,在我的应用程序中工作完全正常一段时间,并在一段时间后不一致崩溃。 我在崩溃期间得到的错误是“无法使用nil模型创建NSPersistentStoreCoordinator” 。
我尝试调试我的应用程序,发现有时候managedObjectModel
返回NULL
。 为了给火灾添加燃料,这种情况并不完全一致。 有一段时间, managedObjectModel
。 但是,突然它返回NULL
…
这是我用来创建托管对象模型的代码。
- (NSManagedObjectModel *)managedObjectModel { if (managedObjectModel_ != nil) { return managedObjectModel_; } NSBundle *newBundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"dataBundle" withExtension:@"bundle"]]; NSString *modelPath = [newBundle pathForResource:@"DataHouse" ofType:@"momd"]; NSURL *modelURL = [NSURL fileURLWithPath:modelPath]; managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; NSLog(@"managedObjectModel_ %@", [managedObjectModel_ entities]); return managedObjectModel_; }
如您所见,由于一些特殊要求,我放置了我的。 xcdataModeld文件位于单独的包中并从那里引用它。 我很震惊,需要一些帮助……谢谢
首先,确保永远不会将managedObjectModel_
重置为nil
。 只需在源代码中搜索“ managedObjectModel_ =
”,唯一的结果应该是您发布的managedObjectModel
代码。
其次,确保managedObjectModel_
无法从外部访问,或者(如果您将managedObjectModel
作为属性公开)readonly。
第三,确保管理Core Data堆栈的类中只有一个实例。 如果它是在主窗口nib中初始化的UIApplication
委托,则不应以编程方式创建它。 如果是单身,请检查是否有一个单一的实例。
当你绝对确定一切正确时,是时候深入挖掘了。 您可以尝试在GDB中将watchpoint设置为managedObjectModel_
。
您的代码中可能发生的最糟糕的事情是一种memset
/ memmove
操作,它们会覆盖您的Core Data堆栈管理器占用的内存。 但是这种错误太随机了,不能总是命中一个给定的内存地址,所以我不会指望它。
- 配件动作segue(UITableViewController)
- 截断一个string并在Objective-c的最后添加省略号
- 如何处理用户数据在不同时间到达的多个推送通知?
- 用另一个NSMutableArray对自定义对象sortingNSMutableArray
- AFNetworking与iOS 4.3不兼容
- objc_setAssociatedObject上的EXC_BAD_ACCESS使用-weak_library /usr/lib/libSystem.B.dylib链接器标志
- 不能下标值为'?' 用'String'types的索引
- 同时插入行和删除行。 UITableView的
- 如何使进度条(UISlider)在我的应用程序中dynamic工作?