0

我正在开发一个使用 coredata 的 iOS 应用程序。我有 2 个 .sqlite 数据库,应该在应用程序启动时加载。一个数据库有英语信息,另一个数据库有葡萄牙语信息。我希望我的应用程序仅在应用程序第一次运行语言选择时显示,然后应该加载相应的数据库。之后,我希望加载另一个视图,并且不应再次出现语言选择。

到目前为止,我的应用程序在应用程序开始时只加载一个数据库。有人可以给我一些提示吗?抱歉这个问题不是很具体:s

谢谢最好的问候

4

1 回答 1

1

基本上,您需要允许用户选择他的语言,然后使用特定的 .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/

于 2013-07-16T21:56:53.260 回答