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

标签 swift realm

我正在将用户登录到全局 Realm 。为此,我使用 Realm 文档中提供的 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 对象相对应的所有有效登录用户身份的字典。

再次强调,这完全是猜测 - 如果有任何进一步的信息出现,请发表评论,我将相应地更新(或删除)答案。

关于swift - Realm SyncUser.login 在 Swift 中不返回syncUser.current,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60068461/

相关文章:

ios - 使用 Realm 加密功能是否会对应用商店提交产生影响?

iOS 组合 : get a strongly typed error from URLSession's dataTaskPublisher

iphone - 应用程序中的 EXC_BAD_ACCESS 错误,Alamofire 3.1.2

ios - 如何从 UINavigationBar 子类设置 barTintColor

ios - swift 3 : Realm creates additional object instead of updating the exisiting one

java - 此版本的 Realm 不支持打开格式版本 0 的 Realm 文件

ios - 如何在 ios,swift 中初始化我的 ViewController 扩展中的 ui 元素

ios - IOS 中 "self"引用什么时候应该弱?

ios - Realm - 将对象添加到另一个对象内的列表

ios - 使用 Realm Swift 计算嵌套对象的出现次数