iphone - 从设备中删除应用程序后无法使用 nil 模型创建 NSPersistentStoreCoordinator

标签 iphone ios xcode core-data

从设备中删除我的应用程序后,我收到了一个“无法使用 nil 模型创建 NSPersistentStoreCoordinator” 错误。我正在 iPad 设备上测试 iPhone 应用程序。我已将这段代码用于检查 AppDelegate.m 中是否有该文件:

- (NSManagedObjectModel *)managedObjectModel {
    if (__managedObjectModel != nil) {
        return __managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Name" withExtension:@"momd"];
    if ([[NSFileManager defaultManager] fileExistsAtPath:[modelURL path]]) {
        NSLog(@"%@", [modelURL path]); //This is printed because file exists
    }
    __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    return __managedObjectModel;
}

问题是 [NSManagedObjectModel initWithContentsOfURL] 返回 nil 值。 我做了以下事情,但没有成功:

  1. 使用此 __managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; 更改 managedObjectModel 实例化;
  2. 清理构建文件夹和清理项目
  3. 重新启动 Xcode
  4. 重启电脑
  5. 将“momd”更改为“mom”
  6. .xcdatamodeld 在 Copy Bundle Resources and Compile Sources 中
  7. 重命名 .xcdatamodeld 并多次清理和关闭 Xcode 项目
  8. 关闭和打开设备
  9. 已删除以下文件夹:$ cd/Users/john/Library/Developer/Xcode/DerivedData
  10. 更改 sqlite 名称以强制生成数据库
  11. (再次)删除了来自 devine 的应用程序

我已经搜索了数小时的解决方案,但仍然找不到。

最佳答案

最后,经过两天尝试解决这个问题,我在这里找到了解决方案:

How to create the magic .xcdatamodeld folder / package?

我现在正在完成一个其他开发人员启动的项目,他似乎没有将最新的更改推送到 repo,但这些更改在设备中的应用程序中,当我删除应用程序时,我删除了正确的 .xcdatamodeld 文件。问题是我在项目中只有一个 MyApp.xcdatamodel 文件,这似乎是一个 momd 空文件夹的原因。

为了创建正确的数据模型层次结构,解决方案非常简单:

  1. 选择MyApp.xcdatamodel
  2. 转到编辑器 > 添加模型版本...

这会将 MyApp.xcdatamodel 文件嵌入到 MyApp.xcdatamodeld 中。现在 momd 文件夹中有 mom 文件,应用程序运行正常。现在唯一的问题是我有两个 MyApp.xcdatamodel,其中一个带有绿色的选中图标,但两者的内容相同,所以没问题。

关于iphone - 从设备中删除应用程序后无法使用 nil 模型创建 NSPersistentStoreCoordinator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12617585/

相关文章:

iphone - 如何验证字符串是否为字母数字

iPhone UITextField inputView 错误 : Assignement to readonly property

iphone - 我想在加载新图像时删除 tableviewcell 中的图像。在 iOS 中

ios - 在运行时获取 iPhone 应用程序的产品名称?

iphone - 来自 "stringWithFormat:"的意外结果

ios - 如何在屏幕上添加一个红色像素

iphone - 在工具栏中添加自定义标签不起作用

iphone - 在 ios6 中使用 facebook 登录无法识别的选择器已发送至实例”

ios - 允许在 UIScrollView 中上下滚动图像

cocoa-touch - 如何在 Xcode 标签中设置换行符?