我有一个带登录屏幕的应用程序,然后在用户登录后在标签栏控制器中有两个表视图。在每个表视图中,我有我想要同步到我的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)
}
但请注意,我需要用户进行配置。我应该从登录屏幕传递此信息,还是这样过度杀伤?提前致谢
答案 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()
祝你好运! :)