gpt4 book ai didi

ios - 使用多个 Realm 时,如何停止所有类出现在具有 0 个实例的所有 Realm 中?

转载 作者:行者123 更新时间:2023-11-28 23:58:09 25 4
gpt4 key购买 nike

例子:

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 red.realm after creating one RedClass and one BlueClass创建一个 RedClass 和一个 BlueClass 后的 blue.realm blue.realm after creating one RedClass and one BlueClass

最佳答案

您需要创建两个单独的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com