核心数据模型抛出异常

Posted

技术标签:

【中文标题】核心数据模型抛出异常【英文标题】:Core Data model Is throwing Exception 【发布时间】:2011-07-13 12:36:45 【问题描述】:

我在我的应用程序中使用核心数据。我的应用程序运行良好。我最近重置了我的模拟器设置,现在该应用程序正在抛出异常。我阅读了所有帖子并清理了我的目标,但它没有运行,然后我设置了断点并在这段代码的最后一行发现异常

- (NSManagedObjectModel *)managedObjectModel 

    if (managedObjectModel_ != nil) 
        return managedObjectModel_;
    
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"TouristGuide" withExtension:@"momd"];
    managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];    
    return managedObjectModel_;

此代码在我的 APPdelegate 文件中.. 异常是

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法创建 NSPersistentStoreCoordinator 与 nil 模型'

【问题讨论】:

您是否在您的 persistentStoreCoordinator 访问器中调用 [self managedObjectModel] 如果你有两个数据模型,检查哪一个是活动的。 【参考方案1】:

正如错误所说,模型似乎为零,或者更确切地说是modelURL。您可以通过添加NSLog(@"%@", modelURL) 看到这一点,它将打印(null)

确保您的模型确实被称为 TouristGuide 并且在 mainBundle 中,即在构建时添加。

【讨论】:

如果名称正确,请确保您的 .xcdatamodeld 文件已添加到 Compile Sources 列表中(在 Xcode 4 中,单击左侧的项目,选择您的目标,转到 Build Phases 并选中 Compile来源)。 +1 出于某种原因,模拟器并不总是删除整个应用程序包,有时会留下数据模型和其他文件的多个副本。重置模拟器可以解决问题。

以上是关于核心数据模型抛出异常的主要内容,如果未能解决你的问题,请参考以下文章

异常抛出:实体数据模型对象实例化时 C# Windows 服务中的“System.IO.FileNotFoundException”

控制器可以捕获模型抛出的异常吗?

模型空异常 --> @if(Model.Count() > 0 )

如何获取核心数据中多个子模型的最小值

Laravel 7 模型工厂为 faker 抛出“InvalidArgumentException: Unknown formatter”异常

核心数据迁移:将关系从一个实体更改为其父实体后的异常