Swift中的内存领域线程

Swift中的内存领域线程,swift,realm,Swift,Realm,我正在尝试使用内存领域来存储一些对象。我通常在次线程中保存对象并在主线程中请求对象 为了避免数据丢失,我还需要对内存领域有一个很强的引用 static private var _strongInMemoryRealm: Realm? = { return VideoObject._inMemoryRealm }() static private var _inMemoryRealm: Realm? { get { var realm: Realm? = nil

我正在尝试使用内存领域来存储一些对象。我通常在次线程中保存对象在主线程中请求对象

为了避免数据丢失,我还需要对内存领域有一个很强的引用

static private var _strongInMemoryRealm: Realm? = {
    return VideoObject._inMemoryRealm
}()

static private var _inMemoryRealm: Realm? {
    get {

        var realm: Realm? = nil

        let config = Realm.Configuration(inMemoryIdentifier: "InMemoryRealm")

        do {
            realm = try Realm(configuration: config)
        } catch let error {
            debugPrint("Realm could not be opened: ", error)
            Crashlytics.sharedInstance().recordError(error)
        }

        return realm

    }
}

我在次线程中调用\u inMemoryRealm,在主线程中调用\u strongInMemoryRealm,此配置不起作用

对于初学者,我建议绝对检查以确保主线程领域引用没有被释放。我个人会使用a在主线程上存储主领域引用。这将是你的领域保持空白的最简单原因


除此之外,当您在后台写入一个领域时,这些更改只会在运行循环的下一次迭代中反映在主线程中。如果需要在此之前反映更改,可以调用
realm.refresh()
,显式请求它提取最新的更改。

为什么它不能正常工作?它做什么?我将对象保存在背景线程上。在相同领域的同一线程上_inMemoryRealm我可以得到对象。回到主线程,领域实例_strongInMemoryRealm返回一个空的ArrayWesome!很高兴我能帮忙!:)