我的应用程序的 Resources 文件夹中有两个或多个数据库,我已将它们复制到 Documents 文件夹中,我的问题是:
如何在我的应用程序中选择要打开的数据库?我可以在代码中只替换 db 的名称吗?
在我的应用程序中,我有一个 UITextfield,用户输入他想要打开的数据库的名称。
你在使用 CoreData 吗?你的问题缺乏细节和代码......
如果您使用的是 CoreData,那么当您创建NSPersistentStoreCoordinator
您创建的托管对象模型在创建 NSManagedObjectModel 时被调用,如下所示:
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"NameOfModelGoesHere" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
然后在创建 NSPersistentStoreCoordinator 时将 NSManagedObjectModel 与特定数据库配对,如下所示:
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"NameOfDataBaseGoesHere.sqlite"];
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
}
return _persistentStoreCoordinator;
完全可以设置多个 persistentStoreCoordinators,每个都引用单独的数据库和模型,但调用它们并跟踪它们完全取决于您。命名约定有帮助。