我尝试登录或注册用户并将其连接到现有领域。然后,根据存储在该领域的信息,我可能需要它们来连接到不同的领域。
不可能尝试!最初配置后具有不同配置的领域?气馁了吗?是否需要在最初的DispatchQueue之外完成?
以下是代码:
SyncUser.logIn(with: usernameCredentials, server: URL(string: "http://11.22.333.0:9080")!) {
user, error in
guard let user = user else {
fatalError(String(describing: error))
}
DispatchQueue.main.async {
let configuration = Realm.Configuration(
syncConfiguration: SyncConfiguration(user: user, realmURL: URL(string: "realm://11.22.333.0:9080/ab56realmURL/NameOfRealm1")!)
)
self.realm = try! Realm(configuration: configuration)
if (someCheckOfData in realm) {
let configuration2 = Realm.Configuration(
syncConfiguration: SyncConfiguration(user: user, realmURL: URL(string: "realm://11.22.333.0:9080/ab56realmURL/NameOfRealm2")!)
)
self.realm = try! Realm(configuration: configuration2)
}
}
}
非常感谢您的帮助!
答案 0 :(得分:2)
不,不气馁。您在此处所做的只是创建Configuration
的2个离散副本,然后在您的服务器上创建2个单独的Realm实例。
这两者将完全分开,因此在用于创建初始Realm
实例后,错误地更改配置不会导致异常。
我们建议的一件事是不要像这样持有特定的Realm引用。它们不是线程安全的,并且GCD不能保证在相同的线程上执行相同的队列,因此您可能会为将来的异常做好准备。
如果这将成为您的主要领域,通常建议将Configuration
设置为默认领域。否则,由于Configuration
是线程安全的(假设您以后不对其进行修改),您可以保留它,并在实际需要使用Realm时将其用于try! Realm(configuruation:)
。