[NSBundle allBundles] 中未出现单独的 CoreData 模型
Posted
技术标签:
【中文标题】[NSBundle allBundles] 中未出现单独的 CoreData 模型【英文标题】:Separate CoreData models not appearing in [NSBundle allBundles] 【发布时间】:2013-03-02 19:46:25 【问题描述】:我有一个完全重写了之前版本的 iPhone 应用程序。但是当用户获得新版本时,会出现 Core Data 问题,因为某些实体具有相似的名称。我根本不想使用旧的数据模型。
我查看了关于不合并数据模型的 SO 帖子,而是使用 initWithContentsOfUrl。但是,所有示例都说首先获取 [NSBundle allBundles] 并遍历它以找到我想要的 DataModel。 https://groups.google.com/d/msg/restkit/6_iu2mLOgTo/mjwz2fSmHG4J
Core Data: Error, "Can't Merge Models With Two Different Entities Named '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 处找不到模型。
【问题讨论】:
【参考方案1】:这对您的用户来说将是非常不愉快的体验。 但是您可以创建一个名称与新模型不同的持久性存储。
【讨论】:
以上是关于[NSBundle allBundles] 中未出现单独的 CoreData 模型的主要内容,如果未能解决你的问题,请参考以下文章