我正在开发一个使用 coredata 的 iOS 应用程序。我有 2 个 .sqlite 数据库,应该在应用程序启动时加载。一个数据库有英语信息,另一个数据库有葡萄牙语信息。我希望我的应用程序仅在应用程序第一次运行语言选择时显示,然后应该加载相应的数据库。之后,我希望加载另一个视图,并且不应再次出现语言选择。
到目前为止,我的应用程序在应用程序开始时只加载一个数据库。有人可以给我一些提示吗?抱歉这个问题不是很具体:s
谢谢最好的问候
基本上,您需要允许用户选择他的语言,然后使用特定的 .sqlite 文件作为种子数据设置一个新的 NSPersistentStore。
你会做这样的事情(请原谅伪代码)
if (/*user chose English*/) {
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
[self addSeedDataNamed: @"English.sqlite" toCoordinator:__persistentStoreCoordinator];
}else if (/*user chose portuguese*/){
[self addSeedDataNamed: @"Portuguese.sqlite" toCoordinator:__persistentStoreCoordinator];
}
- (void) addSeedDataNamed:(NSString *)name toCoordinator:(NSPersistentStoreCoordinator *)storeCoordinator
{
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:name];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSReadOnlyPersistentStoreOption, nil];
[storeCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error];
}
答案大多取自这里: http ://blog.atwam.com/blog/2012/05/11/multiple-persistent-stores-and-seed-data-with-core-data/