我对编程非常陌生,这是我第一次设置Realm Object Server以支持我的iOS应用。到目前为止,我遇到了一些挑战(而且我知道我才刚刚起步),尽管我下定决心要尽我所能,但我觉得很难理解现有的文档。现在,我陷入了登录用户(我为测试目的而创建的虚假用户)的登录过程。我可以注册一个新用户并将其数据写入我的应用默认Realm,但是如果我注销该用户然后尝试重新登录,则可以通过Realm Studio看到为该用户创建了另一个Realm Path,而另一个(空)用户对象是在默认Realm上创建的。为什么会这样?
我尝试过登录而未同步到任何Realm;我还尝试跳过SyncUser.login并通过检索realm.Objects并过滤与用户的用户名和密码匹配的对象来登录用户,并尝试了多种不同的编写SyncUser.login的形式,我在这里找到了这个方法(StackOVerFlow)和互联网。
这是我到目前为止的登录代码:
@IBAction func logInButtonTapped(_ sender:UIButton){
let user = usernameTextField.text
let pass = passwordTextField.text
let url = "my---app.--.cloud.realm.io"
let authURL = URL(string: "https://\(url)")
let credentials = SyncCredentials.usernamePassword(username: user!, password: pass!)
spinner.startAnimating()
//logout current users:
for u in SyncUser.all {
u.value.logOut()
print("\(String(describing: u.value.identity)) is logged out")
}
SyncUser.logIn(with: credentials, server: authURL!) { user, error in
if let user = user {
Realm.Configuration.defaultConfiguration = user.configuration()
Realm.asyncOpen() { realm, error in
print("Login successful with Realm")
self.performSegue(withIdentifier: "loginSuccessSegue", sender: self)
}
} else {
let alert = UIAlertController(title: "Sorry!", message: "We could not find your email address or password", preferredStyle: .alert)
let action = UIAlertAction(title: "Try again", style: .cancel) { (action) in
//what will happen when the users presses Try again:
//avoid segue to Home screen
print("Invalid email or password")
}
alert.addAction(action)
self.present(alert, animated: true, completion: nil)
}
}
}
当我登录“假测试”用户时,我是为每次登录尝试创建此新“领域路径”的人吗?我看到我无法以这种方式保存任何用户数据,所以我试图了解这里发生的情况。很感谢任何形式的帮助!谢谢;)