bugfix> ios > 投稿

例:

2つのレルム:Blue.realm、Red.realm

2つのRLMObjectサブクラス:BlueClass、RedClass。

BlueClassインスタンスを作成してBlue.realmに追加し、RedClassインスタンスを作成してRed.realmに追加します。

Realm Studioでレルムとそのコンテンツを表示すると、次のように表示されます。

Blue.realm

BlueClass(1)

RedClass(0)

Red.realm

BlueClass(0)

RedClass(1)

インスタンス化されたインスタンスは正しいレルムにありますが、他のすべてのレルムクラスは、0の内容を持つすべてのレルムに追加されます。

私はどこかにそれに対する簡単な修正がなければならないと確信していますが、私はそれを見つけることができません。

-(void)runRealmTests{
NSURL *defaultURL = [RLMRealmConfiguration defaultConfiguration].fileURL;
NSLog(@"FILEURL: %@",defaultURL);
NSError *error;
RLMRealmConfiguration *redConfig = [RLMRealmConfiguration defaultConfiguration];
redConfig.fileURL = [[defaultURL URLByDeletingLastPathComponent] URLByAppendingPathComponent:@"red.realm"];
RLMRealm *redRealm = [RLMRealm realmWithConfiguration:redConfig error:&error];
if (redRealm == nil) {
    NSLog(@"ERROR: %@",error.localizedDescription);
    return;
}
RedClass *red = [[RedClass alloc]init];
red.date = [NSDate date];
[redRealm beginWriteTransaction];
[redRealm addObject:red];
BOOL success = [redRealm commitWriteTransaction:&error];
if (!success) {
    NSLog(@"ERROR: %@",error.localizedDescription);
    return;
}
RLMRealmConfiguration *blueConfig = [RLMRealmConfiguration defaultConfiguration];
blueConfig.fileURL = [[defaultURL URLByDeletingLastPathComponent] URLByAppendingPathComponent:@"blue.realm"];
RLMRealm *blueRealm = [RLMRealm realmWithConfiguration:blueConfig error:&error];
if (blueRealm == nil) {
    NSLog(@"ERROR: %@",error.localizedDescription);
    return;
}
BlueClass *blue = [[BlueClass alloc]init];
blue.date = [NSDate date];
[blueRealm beginWriteTransaction];
[blueRealm addObject:blue];
success = [blueRealm commitWriteTransaction:&error];
if (!success) {
    NSLog(@"ERROR: %@",error.localizedDescription);
    return;
}

}

1つのRedClassと1つのBlueClassを作成した後のred.realm1つのRedClassと1つのBlueClassを作成した後のblue.realm

回答 1 件
  • 2つの個別の Realm.Configuration を作成する必要があります  インスタンスと2つの Realm を作成します sどの Object を指定するさまざまな構成を使用する  サブクラスはどのレルムに属している必要があります。デフォルトの構成にはすべての Object が含まれます  両方のレルムのサブクラス、したがって問題。

    let blueConfig = Realm.Configuration(fileURL: blueURL, inMemoryIdentifier: "blueRealm", schemaVersion: 1, migrationBlock: nil, objectTypes: [BlueClass.self])
    let redConfig = Realm.Configuration(fileURL: redURL, inMemoryIdentifier: "redRealm", schemaVersion: 1, migrationBlock: nil, objectTypes: [RedClass.self])    
    do {
        let blueRealm = try Realm(configuration: blueConfig)
        let redRealm = try Realm(configuration: redConfig)
    } catch {
        print(error)
        // handle the error correctly
    }
    
    

あなたの答え