这个问题已经在这里有一个答案:
- 是否有可能有一个iOS应用多核心数据“数据库”? 2个回答
我工作的地方我处理核心数据的iPad应用程序。
由该应用程序所管理的数据可以分为两大类。
- 所述第一类型的数据是特定于仅仅该设备或应用。
- 而的数据需求中具有相同的应用程序的各种设备synching其他类别。
所以在场景中,我有一个思想在我的项目中的两个模型文件和两个相应的源码文件。 而synching一个sqlite的文件,从而实现synching。
请建议,如果我的做法是正确的和可行的。 如果没有,那么请提出其他解决方案。
请理解这个问题。 我在这里谈论彼此具有不同结构的两个sqlite的文件。 意思是“.xcdatamodel”模型文件
可能重复这里 。
你可以有任何数量的数据模型,只要您为每个不同的管理对象的背景和妥善管理。
- (NSURL *)applicationDocumentsDirectoryForCoreData
{
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
//第一个数据模型
NSURL *modelURL1 = [[NSBundle mainBundle] URLForResource:@"1_model" withExtension:@"momd"];
NSURL *storeURL1 = [[self applicationDocumentsDirectoryForCoreData] URLByAppendingPathComponent:@"1_model.sqlite"];
NSError *error = nil;
NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL1];
persistentStoreCoordinator1 = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: managedObjectModel];
if (![persistentStoreCoordinator1 addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL1 options:nil error:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
//第二个模型。
NSURL *modelURL2 = [[NSBundle mainBundle] URLForResource:@"2_model" withExtension:@"momd"];
NSURL *storeURL2 = [[self applicationDocumentsDirectoryForCoreData] URLByAppendingPathComponent:@"2_model.sqlite"];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL2];
NSError *error = nil;
persistentStoreCoordinator2 = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel];
if (![persistentStoreCoordinator2 addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL2 options:nil error:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
尽管采取了商务部的商店,你需要:
//select your store - do that in selectStore or a function like that.
NSPersistentStoreCoordinator *coordinator = [self selectStore];
if (coordinator != nil) {
managedObjectContext = [[NSManagedObjectContext alloc] init];
[managedObjectContext setPersistentStoreCoordinator:coordinator];
}
两家店之间的选择。
-(NSPersistentStoreCoordinator *)selectStore
{
if(someCondtion? return persistentStoreCoordinator1: persistentStoreCoordinator2;
}
我怀疑它是不是更新的时候,你应该使用的plist和商店为所有设备具体的事情的文件。 然后你就可以在一行代码读入字典或阵列。
因此,要回答你的问题,是的,只要你想,你可以有许多coredata文件,但它可以成为维护麻烦
文章来源: is it possible to have multiple core data model files to one single Xcode project? [duplicate]