登录Realm移动平台后的流行视图控制器
问题描述:
我正在使用Realm移动平台与我的Realm iOS应用程序,并试图在用户登录后弹出视图控制器。这是我现在拥有的代码:登录Realm移动平台后的流行视图控制器
let usernameCredentials = SyncCredentials.usernamePassword(username: emailField.text!, password: passwordField.text!, register: false)
let serverURL = URL(string: "http://45.55.220.254:9080")
SyncUser.logIn(with: usernameCredentials, server: serverURL!){ user, error in
if user != nil{
print("signed in")
MyRealm.copyToSyncedRealm()
self.navigationController?.popToRootViewController(animated: true)
}else if let error = error{
self.loginButton.setTitle("Log in", for: .normal)
let alert = UIAlertController(title: "Error", message: String(describing: error), preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { void in
}))
self.present(alert, animated: true)
}
}
然而,当我登录时,视图控制器没有弹出,当我点击导航项目的后退按钮的应用程序冻结。任何想法为什么这可能会发生?
答
在后台队列上调用传递给SyncUser.logIn(with:server:)
的回调。由于从主线程调用UIKit是安全的,因此您需要将工作分派到主线程。
SyncUser.logIn(with: usernameCredentials, server: serverURL!) { user, error in
DispatchQueue.main.async {
if user != nil {
// Success…
} else if let error = error {
// Error…
}
}
}