3 つの個別の .sqlite データベースに依存するアプリを構築しています。これを可能にするために、App Delegate のどのメソッドを編集する必要がありますか? 今のところ、テンプレートがどのようにそれらを作成したかについては触れていませんmanagedObjectContext。managedObjectModel私persistantStoreCoordinatorはこのように見えます:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (_persistentStoreCoordinator != nil)
    {
        return _persistentStoreCoordinator;
    }
    NSURL *storeURLConfigA = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"dbA.sqlite"];
    NSURL *storeURLConfigB = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"dbB.sqlite"];
    NSURL *storeURLConfigC = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"dbC.sqlite"];
//    // Pre-load .sqlite db in Project Navigator into app on first run after deleting app
    if (![[NSFileManager defaultManager] fileExistsAtPath:[storeURLConfigA path]])
    // dbA
    {
        NSURL *preloadURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"dbA" ofType:@"sqlite"]];
        NSError* err = nil;
        if (![[NSFileManager defaultManager] copyItemAtURL:preloadURL toURL:storeURLConfigA error:&err])
        {
            NSLog(@"Error preloading database A - %@",error.description);
        }
    }
    if (![[NSFileManager defaultManager] fileExistsAtPath:[storeURLConfigB path]])
    // dbB
    {
        NSURL *preloadURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"dbB" ofType:@"sqlite"]];
        NSError* err = nil;
        if (![[NSFileManager defaultManager] copyItemAtURL:preloadURL toURL:storeURLConfigB error:&err])
        {
            NSLog(@"Error preloading database B - %@",error.description);
        }
    }
    if (![[NSFileManager defaultManager] fileExistsAtPath:[storeURLConfigC path]])
    // dbC
    {
        NSURL *preloadURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"dbC" ofType:@"sqlite"]];
        NSError* err = nil;
        if (![[NSFileManager defaultManager] copyItemAtURL:preloadURL toURL:storeURLConfigC error:&err])
        {
            NSLog(@"Error preloading database C - %@",error.description);
        }
    }
//    // Put the Configs into the PersistantStoreCoordinator and tie them to their database file
    NSError *error = nil;
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    NSDictionary *options = @{NSSQLitePragmasOption : @{@"journal_mode": @"DELETE"}};
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"Config_A" URL:storeURLConfigA options:options error:&error])
    {
        NSLog(@"Error setting up dbA - %@",error.description);
        abort();
    }
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"Config_B" URL:storeURLConfigB options:options error:&error])
    {
        NSLog(@"Error setting up dbB - %@",error.description);
        abort();
    }
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"Config_C" URL:storeURLConfigC options:options error:&error])
    {    
        NSLog(@"Error setting up dbC - %@",error.description);
        abort();
    }
    return _persistentStoreCoordinator;
}
mainBundle次に、 3 つのデータベースすべてに対して、すべてのテーブル/エンティティを含む .xcdatamodelID を 1 つ持っています。XCode の CoreData エディター インターフェイスを使用して、Configurationに加えて、 Configurations Config_A、Config_B、およびを追加しました。エンティティをデータベースの構成に移動しました (各エンティティは 1 つのデータベースにのみ存在する必要があります)。Config_CDefault
アプリを実行すると、すべて正常に動作し、問題なくデータを読み書きできます。問題は、テーブルを表示するときに発生します (たとえば、ターミナルまたは Firefox の SQLite Manager を介して)。3つのデータベースすべてにすべてのテーブルが含まれていますが、テーブルには、存在するはずのデータベースにしかデータがありません(他の2つのデータベースのそのテーブルには0行があります)。
すべてのテーブルが各データベースにあるのはなぜですか? 各データベースに必要なテーブルのみを含めるにはどうすればよいですか?