Realm Object Server创建DB和ROS但不同步

时间:2016-12-01 17:42:44

标签: ios swift swift2 realm realm-mobile-platform

我在AWS(RHAT)上设置了一个Realm Object Server,它似乎工作正常。我可以看一下仪表板,它告诉我有多少连接,以及端口9080上打开了多少领域。我的代码在设备上工作正常,更新发生在设备领域。但我没有看到ROS领域发生任何变化。我可能会得到一些非常基本的错误,但我不知道是什么。

func setupRealm() {
    // Authenticating the User
    let username = "exampleuser"
    let password = "examplepassword"
    SyncUser.logInWithCredentials(SyncCredentials.usernamePassword(username, password: password), authServerURL: NSURL(string: "http://example.com:9080")!, onCompletion:
    { user, error in
        if let user = user {
            // Opening a remote Realm
            let realmURL = NSURL(string: "realm://example.com:9080/~/VWF3")!
            let config = Realm.Configuration(syncConfiguration: SyncConfiguration(user: user, realmURL: realmURL))
            let realm = try! Realm(configuration: config)
            // Any changes made to this Realm will be synced across all devices!
        } else if let error = error {
            // handle error
        }
    })
}

我从ViewDidLoad调用setupRealm()。

我的开发人员需要能够看到ROS领域的变化以确保一切正常,但所有这些都是单用户领域,表格结构准确,零数据。

我检查了服务器上的日志文件,没有什么突出的。

马特

1 个答案:

答案 0 :(得分:2)

在执行写操作时,您需要确保仍然引用该特定Realm(及其同步配置)。如果您在登录后尝试写入let realm = try! Realm(),那么您仍然会引用默认的Realm,这是不同步的。

如果您打算让整个应用同步,可以将该特定Configuration设置为您的默认领域:

if let user = user {
    // Opening a remote Realm
    let realmURL = NSURL(string: "realm://example.com:9080/~/VWF3")!
    let config = Realm.Configuration(syncConfiguration: SyncConfiguration(user: user, realmURL: realmURL))
    Realm.Configuration.defaultConfiguration = configuration
    // All calls to `Realm()` will now use this configuration
}

否则,您总是可以在需要时生成配置(或者有一个可以为您管理它的全局常量类)。

let realmURL = NSURL(string: "realm://example.com:9080/~/VWF3")!
let configuration = Realm.Configuration()
configuration.syncConfiguration = SyncConfiguration(user: SyncUser.current, realmURL: realmURL))
let realm = try! Realm(configuration: configuration)