NSInvalidArgumentException',原因:'无法使用nil模型创建NSPersistentStoreCoordinator'

时间:2012-09-16 23:15:31

标签: iphone sdk xcode4.3

我有一个非常奇怪的问题..我的应用程序位于一个文件夹中,我保留了所有项目。如果我从该位置打开应用程序(使用Xcode 4.5)一切正常,应用程序正常工作,但如果我在桌面上放置应用程序的副本并尝试打开应用程序在我的iPhone上进行测试,则错误是出来(NSInvalidArgumentException',原因:'无法使用nil模型创建NSPersistentStoreCoordinator')

我已经尝试重置并清理一切可能但没有什么不起作用?

这件事让我抓狂?

有什么想法吗?

感谢您的帮助..

3 个答案:

答案 0 :(得分:2)

在代码行stringByAppendingPathComponent中更改数据库的名称。将值从dummy.sqlite更改为anyOther.sqlite。这是重新创建数据库的正确解决方案。

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator != nil) {
    return persistentStoreCoordinator;
}
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory]
                                           stringByAppendingPathComponent: @"dummy.sqlite"]];
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]
                              initWithManagedObjectModel:[self managedObjectModel]];
if(![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
                                             configuration:nil URL:storeUrl options:nil error:&error]) {
    /*Error for store creation should be handled in here*/
}

return persistentStoreCoordinator;

}

答案 1 :(得分:0)

我有同样的问题。发现在AppDelegate.m中,我将模型URL链接到以前不再使用的模型名称,因此在尝试与数据模型交互时,它会抛出此错误。

希望能帮助任何有同样问题的人。

干杯

答案 2 :(得分:0)

它相对简单。

如果你有一个xcdatamodel文件没有版本:在你的managedObjectModel声明中使用扩展名“mom”。 如果你的xcdatamodel有版本,你应该使用“momd”。