【问题标题】:Switching between realms (iOS / Swift 3)在领域之间切换(iOS / Swift 3)
【发布时间】:2017-02-11 05:24:13
【问题描述】:

我试图登录或注册用户并将他们连接到现有领域。然后,根据存储在该领域中的信息,我可能需要它们连接到不同的领域。

是不是可以试试!初始配置后具有不同配置的领域?是不是气馁了?是否需要在初始 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)
         }
      }
}

非常感谢您的帮助!

【问题讨论】:

    标签: ios swift swift3 realm


    【解决方案1】:

    不,这并不气馁。您在这里所做的只是创建Configuration 的2 个离散副本,随后将在您的服务器上创建2 个单独的Realm 实例。

    两者将完全分开,因此在用于创建初始Realm 实例后,不会因错误地更改配置而导致异常。

    我们确实推荐的一件事是不要像那样保留特定的 Realm 引用。它们不是线程安全的,并且 GCD 不能保证在相同的线程上执行相同的队列,因此您可能会为将来的异常做好准备。

    如果这将是您的主要 Realm,通常建议将 Configuration 设置为默认 Realm。否则,由于Configuration 是线程安全的(假设您以后不修改它),您可以保留它,并在您实际需要使用Realm 时将其用于try! Realm(configuruation:)

    【讨论】:

    • 感谢您的回答!我已经用这段代码朝着我的目标取得了进展。它的哪一部分保留了特定的 Realm 引用?将主要领域设置为默认配置是什么意思?我只试! Realm(configuration:) 当用户第一次登录/注册或当我需要将他们切换到不同的 Realm 时。之后我只是使用尝试! itemName.realm?.write { 进行更改,我会收到带有通知令牌的更新,以了解它们所连接的领域中的任何更改。一旦我将 self.realm 设置为 configuration2,我最初连接的领域就会被覆盖,对吧?
    • @RanLearns 不用担心!如果这解决了您的问题,请不要忘记将其标记为已接受的答案。 :) 当您向您的类添加一个名为realm 的属性并手动设置self.realm = realm 时,这就是我所说的挂在引用上的意思。主要 Realm,我的意思是如果你不想每次都使用 Realm(configuration:),你可以将 Realm.Configuration.defaultConfiguration 设置为调用 Realm() 时返回的 Realm。
    • 啊,好吧!不,它不会被覆盖。它将作为一个单独的条目存在于您的用户帐户中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多