swift - Realm 服务器对象不正确的线程异常

标签 swift macos realm realm-mobile-platform

我有一个应用程序, Realm 对象是这样在本地管理的

import Foundation
import RealmSwift

class Patient: Object {

    static var realm: Realm?
    dynamic var name = ""

    convenience init(name: String, save: Bool = false) {
        self.init()
        self.name = name
        if save() {
            self.save
        }
    }


    func save() {
        try! Patient.realm?.write {
            Patient.realm?.add(self, update: true)
        }
    }

    static func getAllPatients() -> Results<Patient>? {
        return Patient.realm?.objects(Patient.self)
    }

}

当我尝试将上述代码转换为与 Realm 对象服务器同步时,在尝试将从登录方法传递的 Realm 实例传递到我的类时遇到线程错误

static func userLogin(onCompletion: @escaping (Realm) -> Void) {
    let serverURL = URL(string: "http://127.0.0.1:9080")!
    let credentials = SyncCredentials.usernamePassword(username: "test@test", password: "test")
    SyncUser.logIn(with: credentials, server: serverURL) {
        user, error in

        if let user = user {
            let syncServerURL = URL(string: "realm://localhost:9080/~/test")!
            let config = Realm.Configuration(syncConfiguration: SyncConfiguration(user: user, realmURL: syncServerURL))
            let realm = try! Realm(configuration: config)
            onCompletion(realm)
        } else if _ = error {
        }
    }

} 

在这里获取 Realm 实例

userLogin() { realm in
        Patient.realm = realm
    }

现在,当我在类函数 (getAllPatients) 中使用这个新的 Patient.realm 时,我收到不正确的线程异常

有什么可能的方法可以将 Realm 实例从 userLogin 传递到我的类而不导致此线程异常?如果我将查询放在登录功能中,是否意味着每次需要从数据库获取内容或编辑数据库时都需要登录、同步?

最佳答案

在您的登录函数中,您应该存储使用登录用户创建的 Realm.Configuration 对象,并根据需要使用它来创建 Realm 实例,而不是尝试存储 Realm 对象。 Realm 实例是特定于线程的,而配置对象则不是。

关于swift - Realm 服务器对象不正确的线程异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41581842/

相关文章:

json - Swift Realm 导入 Json 数组数据

ios - 如何在swift中的分段控件中进行多重选择?

macos - 在 lion 上损坏的 brew 安装的 postgresql

macos - 让 GNU Make 解析 OSX 中的 shell 配置文件?

java - 如何将 Realm 结果转换为数组并传递给另一个 Activity ?

android - RealmRecylerAdapter 与 RxJava

swift - 如何在没有 ScrollView 的情况下为键盘移动带有文本字段的 ImageView ?

ios - 如何只允许一个单元格可点击

输入多个单词时,Swift UIText 字段抛出 nil 错误

iphone - Connect() 从 ios 到同一子网中的 ios 设备