iphone / ipad通用应用程序可以有两个不同的xcdatamodel文件吗?

时间:2010-11-13 03:07:14

标签: iphone objective-c ipad core-data

我不想使用现有的iphone应用程序进行数据迁移。是否可以让ipad版本使用与iphone版本不同的xcdatamodel文件?

我搜索项目文件,它引用了myapp.xcdatamodel,无法找到它所连接的位置。

有什么建议吗?

appdelegate在哪里设置了这个?

我确实看到了:

NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"storeLocations.sqlite"]];

3 个答案:

答案 0 :(得分:2)

持久存储协调器或核心数据的任何其他部分都没有什么神奇之处。它们只是具有方法和属性的对象,就像其他任何东西一样。

在您的app委托中,您只需要指定多个,la:

标题

NSManagedObjectContext *managedObjectContext;
NSManagedObjectModel *managedObjectModel;
NSPersistentStoreCoordinator *persistentStoreCoordinator;

NSManagedObjectContext *managedObjectContext2;
NSManagedObjectModel *managedObjectModel2;
NSPersistentStoreCoordinator *persistentStoreCoordinator2;

<强>实施

- (NSManagedObjectContext *)managedObjectContext {

  if (managedObjectContext != nil) {
    return managedObjectContext;
  }

  NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
  if (coordinator != nil) {
    managedObjectContext = [[NSManagedObjectContext alloc] init];
    [managedObjectContext setPersistentStoreCoordinator:coordinator];
  }
  return managedObjectContext;
} 

- (NSManagedObjectContext *)managedObjectContext2 {

  if (managedObjectContext2 != nil) {
    return managedObjectContext2;
  }

  NSPersistentStoreCoordinator *coordinator2 = [self persistentStoreCoordinator2];
  if (coordinator2 != nil) {
    managedObjectContext2 = [[NSManagedObjectContext alloc] init];
    [managedObjectContext2 setPersistentStoreCoordinator:coordinator2];
  }
  return managedObjectContext2;
} 

答案 1 :(得分:1)

模型会在你的App Delegate中被连接起来。

NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"myApp" 
                                                      ofType:@"momd"];

我建议不要使用两种型号,但我也不知道它是如何工作的。我猜测对象模型和持久存储周围的条件。

您的ipad型号与另一款型号有何不同,但不是一个不同的应用程序?

答案 2 :(得分:0)

我记得在核心数据doco中阅读有关指定存储托管对象的持久存储的内容。见NsManagedObjectContext assignObject:toPersistentStore:。这会引导你朝着正确的方向发展。您可能需要实例化多个持久性存储对象。