在多页iOS应用程序上将数据同步到Realm后端的最佳方法是什么?

时间:2017-08-17 10:18:36

标签: ios swift realm

我有一个带登录屏幕的应用程序,然后在用户登录后在标签栏控制器中有两个表视图。在每个表视图中,我有我想要同步到我的Realm数据库的数据。

我的Realm数据库的设置主要基于以下教程:https://realm.io/docs/tutorials/realmtasks/

用户身份验证的代码如下

SyncUser.logIn(with: userCredentials, server: (url! as URL)) { user, error in
    guard user != nil else {
        print("Error")
        self.logInMessage.text = "Invalid login details, please try again"
        self.logInMessage.shake()
        return
    }
    DispatchQueue.main.async {
        self.performSegue(withIdentifier: "logInSegue", sender: self)
    }
}

在我的每个tableviews中,我的目标是使用以下代码:

DispatchQueue.main.async {
    // Open Realm
    let configuration = Realm.Configuration(
        syncConfiguration: SyncConfiguration(user: user, realmURL: URL(string: "realm://127.0.0.1:9080/~/realmtasks")!)
    )
    self.realm = try! Realm(configuration: configuration)
}

但请注意,我需要用户进行配置。我应该从登录屏幕传递此信息,还是这样过度杀伤?提前致谢

1 个答案:

答案 0 :(得分:1)

我会在您的应用启动时设置您的Realm的默认配置(甚至在您对用户进行身份验证之前)。这可以在你的AppDelegate或类似的#34; startup"文件。

let configuration = Realm.Configuration(
    syncConfiguration: SyncConfiguration(user: user, realmURL: URL(string: "realm://127.0.0.1:9080/~/realmtasks")!)
)

Realm.Configuration.defaultConfiguration = configuration

然后在加载的第一个视图中,您负责用户身份验证(这可能需要一些UI,因此您的用户可以登录,除非您使用Realm进行iCloud身份验证,这可能发生在幕后)。

对用户进行身份验证后,您可以随时访问他们的SyncUser对象:

//Log out the user (for example)
SyncUser.current?.logOut()
祝你好运! :)