我不想使用现有的iphone应用程序进行数据迁移。是否可以让ipad版本使用与iphone版本不同的xcdatamodel文件?
我搜索项目文件,它引用了myapp.xcdatamodel,无法找到它所连接的位置。
有什么建议吗?
appdelegate在哪里设置了这个?
我确实看到了:
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"storeLocations.sqlite"]];
答案 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:
。这会引导你朝着正确的方向发展。您可能需要实例化多个持久性存储对象。