Realm SyncUser.login 在 Swift 中不会返回 syncUser.current



我正在将用户登录到全局领域。为此,我正在使用领域文档中提供的 SyncUser.login 函数,但完成处理程序中的任何代码都没有运行,因此我的应用程序一直崩溃为 SyncUser.current == nil。 这是不起作用的代码:

SyncUser.logIn(with: .anonymous(), server: URL(string: "https://centralized-soft-chips.us1.cloud.realm.io")!) {
(user, err) in
if let _ = user {
// User is logged in
print("SUCCESS")
} else if let error = err {
print("Error")
fatalError(error.localizedDescription)
}
}

有没有人遇到过这个问题,或者他们可以重新创建它吗?

这是一个完全的猜测,因为你的代码对我有用。

我认为正在发生的事情是你同时有两个用户进行身份验证。这在开发过程中发生在我们身上,因为他们的应用程序会崩溃并让用户进行身份验证,然后当我们进行更改并重新运行时,我们可能会对另一个用户进行身份验证等。

当有多个身份验证用户时,调用 SyncUser.current 将崩溃。

首先,我会像这样翻转错误检查以首先捕获任何致命的类型错误,如果发生这种情况,则返回。

SyncUser.logIn(with: creds, server: Constants.AUTH_URL) { user, err in
if let err = err {
print(err.localizedDescription)
return
}

尝试一下,看看是否会将任何错误打印到控制台。

我不知道您的登录代码是从哪里调用的,但这是我们现有的。如果应用程序启动并且有多个用户从此设备进行身份验证,我们只需将它们全部注销,然后继续登录

override func viewDidAppear() {
super.viewDidAppear()
let count = SyncUser.all.count
if count > 1 {
for userDict in SyncUser.all {
let user = userDict.value as! SyncUser
user.logOut()
}
}
if let _ = SyncUser.current {
print("user already logged in")
self.finishLogin()
} else {
print("logging in a user")
self.handleLoginAction()
}
}

SyncUser.all 是与其 SyncUser对象对应的所有有效登录用户身份的字典。

同样,这是一个完全的猜测 - 如果有任何进一步的信息曝光,请发表评论,我将相应地更新(或删除(答案。

最新更新