【问题标题】:Core Data - loading external store / error: '+entityForName: could not locate an NSManagedObjectModel for entity name 'Place''核心数据-加载外部存储/错误:'+entityForName:找不到实体名称'Place'的NSManagedObjectModel'
【发布时间】:2012-01-15 07:31:06
【问题描述】:

我有一个使用 Core Data 进行数据持久性的应用程序。我的应用程序由 TabBarController 内的 (4) 个导航控制器组成。导航控制器的根视图控制器是一个 UITableView 控制器,当您选择一个单元格时,它会在每种情况下显示一个详细视图控制器。我希望主应用程序是静态的,因此用户无法编辑数据,并且我的更新将使用单独的应用程序进行,我将使用该应用程序更新数据,然后发布新版本。

我已经完成了数据应用程序,它成功保存了数据,我可以调用它来显示,一切都很好。我还使用 SQlite Data 浏览器查看了数据,以确保一切正常。

然后我将填充的 .sqlit 文件放在主应用程序的文档目录中,并确保名称匹配如下:

NSURL *storeURL = [[self applicationDocumentsDirectory] ​​URLByAppendingPathComponent:@"RoundTopApp.sqlite"];

执行此操作然后运行应用程序后,我收到以下错误:

'+entityForName: 找不到实体名称“Place”的 NSManagedObjectModel

我添加了下面的代码来说明我正在使用 NSFetchedResultsController 来执行提取。

  • (void)viewDidLoad { [超级viewDidLoad];

    NSError *错误; if (![[self fetchedResultsController] performFetch:&error]) { NSLog(@"未解决的错误 %@, %@", error, [error userInfo]); 退出(-1); // 失败 }

    self.title = @"住宿"; }

我不确定这里出了什么问题,除了我未能将它添加到应用程序包或其他东西。

任何帮助将不胜感激。

哈德森

【问题讨论】:

    标签: core-data nsfetchedresultscontroller save


    【解决方案1】:

    错误表明您正在尝试从数据存储中访问名为“Place”的实体,但您在应用中定义的托管对象模型不包含此实体。也许您已经在创建数据存储的其他应用程序中添加了这个实体?如果是这样,您需要更新正在读取数据存储的应用中的托管对象模型,以匹配已创建存储的应用中的模型。

    或者,如果您已在两个应用程序之间复制了托管对象模型,而您只是将其复制到其中,则您可能需要执行干净构建(产品 > 清洁)。如果您要维护版本化模型,请确保将新模型设置为当前模型。

    【讨论】:

    • 我仔细检查以确保,但坦率地说,我将模型文件直接从“更新”应用程序复制到“主”应用程序并重命名。所以型号是一样的。我认为这是一种可以接受的做法。
    • 鉴于该信息,请参阅更新的评论重新尝试清洁构建。
    • 我做了一个干净的构建,没有运气。
    • 你能展示为当前视图设置 ManagedObjectContext 的代码吗?
    • 我无法将其粘贴到此处,因此这里是发布代码的网站的链接。我为 AppDelegate.m 提供了 x-code 提供的核心数据模板,然后是 LodgingViewController.m,我在商店中调用了 fetch。 topgradedesigns.com/page2/files/category-stackoverflow.html
    猜你喜欢
    • 2010-12-31
    • 2012-07-20
    • 2011-10-29
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2012-04-30
    • 2012-06-20
    • 2011-03-21
    相关资源
    最近更新 更多