0

我有一个完全重写以前版本的 iPhone 应用程序。但是当用户获得新版本时,会出现 Core Data 问题,因为某些实体名称相似。我根本不想使用旧的数据模型。

我查看了关于不合并数据模型的 SO 帖子,而是使用initWithContentsOfUrl。但是,所有示例都说首先获取[NSBundle allBundles]并遍历它以找到我想要的 DataModel。 https://groups.google.com/d/msg/restkit/6_iu2mLOgTo/mjwz2fSmHG4J

核心数据:错误,“无法将模型与名为 'foo' 的两个不同实体合并”

// Look for our managed object model in all of the bundles. (From the app
  // it is in the main bundle but not for unit tests.)
  NSString *modelPath = nil;
  for (NSBundle* bundle in [NSBundle allBundles])
  {
    modelPath = [bundle pathForResource:@"MyDataModelFilename" ofType:@"momd"];
    if (modelPath)
      break;
  }
  NSAssert(modelPath != nil, @"Could not find managed object model.");
  NSManagedObjectModel* mom = [[NSManagedObjectModel alloc] 
                               initWithContentsOfURL:[NSURL fileURLWithPath:modelPath]];

  objectManager.objectStore = 
    [RKManagedObjectStore objectStoreWithStoreFilename:_databaseFilename 
                                 usingSeedDatabaseName:nil 
                                    managedObjectModel:mom 
                                              delegate:nil];

但是,当我这样做时, allBundles中只有一个对象,并且该 URL 是整个 .app 文件本身的 URL,而不是特定的“.xcdatamodeld”文件。

那么如何指向特定的“.xcdatamodeld”文件呢?我尝试对自己的 URLPath 进行硬编码,但分配的 MOM 始终为零 - 表明它在该 URL 处找不到模型。

4

1 回答 1

-2

对于您的用户来说,这将是一个非常不愉快的体验。但是您可以使用与新模型不同的名称创建持久存储。

于 2013-03-02T20:16:55.413 回答