例子:
2 个 Realm :Blue.realm、Red.realm
2 个 RLMObject 子类:BlueClass、RedClass。
我创建 BlueClass 实例并将其添加到 Blue.realm,我创建 RedClass 实例并将其添加到 Red.realm。
当我在 Realm Studio 中查看 Realm 及其内容时,我会看到:
Blue.realm
蓝色类(1)
红级 (0)
Red.realm
蓝色类(0)
红色类(1)
实例化的实例位于正确的 Realm ,但所有其他 Realm 类都添加到每个内容为 0 的 Realm 。
我确信某个地方一定有一个简单的修复方法,但我找不到它。
-(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;
}
创建一个 RedClass 和一个 BlueClass 后的 red.realm 创建一个 RedClass 和一个 BlueClass 后的 blue.realm
最佳答案
您需要创建两个单独的 Realm.Configuration
实例,并使用不同的配置创建两个 Realm
,这些配置指定哪个 Object
子类应该属于哪个境界。默认配置包括您的两个 Realm 中的所有 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
}
关于ios - 使用多个 Realm 时,如何停止所有类出现在具有 0 个实例的所有 Realm 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50524635/