核心数据 - 加载外部存储/错误:'+ entityForName:无法找到实体名称'Place'的NSManagedObjectModel

时间:2011-12-07 19:24:10

标签: core-data nsfetchedresultscontroller save

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

我已经完成了数据应用程序并成功保存了数据,我可以将其重新调用以显示,并且所有数据都显示良好。我还用SQlite数据浏览器查看了数据,以确定它是好的。

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

  

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

执行此操作然后运行应用程序后,出现以下错误:

  

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

我添加了以下代码,注意我正在使用NSFetchedResultsController来执行提取。

  • (无效)viewDidLoad中 { [super viewDidLoad];

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

    self.title = @" Lodging&#34 ;; }

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

任何帮助都将不胜感激。

哈德森

1 个答案:

答案 0 :(得分:0)

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

或者,如果您在两个应用程序之间复制了托管对象模型,并且您只是复制了它,则可能需要执行Clean Build(Product> Clean)。如果您要维护版本化模型,请确保将新模型设置为当前模型。