核心数据模型文件多核到一个xcode项目是否可行?

我正在研究一个我正在处理核心数据的ipad应用程序。

应用程序pipe理的数据可以分为两类。

  • 第一种数据仅适用于该设备或应用程序。
  • 而另一类数据需要在具有相同应用的各种设备之间同步。

所以在scnerio中,我想到了在我的项目中有两个模型文件和两个corressponding的sqlite文件。 并同步一个sqlite文件,以实现syching。

请build议,如果我的方法是正确和可行的。 如果没有,那么请build议其他解决scheme。

嘿家伙请尝试理解这个问题。 在这里我正在谈论两个不同结构的sqlite文件。 意思是“.xcdatamodel”模型文件

谢谢。

可能在这里重复。

您可以拥有任意数量的数据模型,只要您为每个数据模型创build不同的托pipe对象上下文并对其进行适当的pipe理。

- (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(); } 

而当你想要的商店拿出MOC时:

 //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]; } 

两家商店之间的select。

 -(NSPersistentStoreCoordinator *)selectStore { if(someCondtion? return persistentStoreCoordinator1: persistentStoreCoordinator2; } 

您应该使用plist并将其作为所有设备特定事物的文件存储,因为我怀疑它并不经常更新。 然后你可以在一行代码中将它读入字典或数组中。

所以要回答你的问题,是的,你可以拥有尽可能多的coredata文件,但是它可能会成为一个麻烦