InMemory Realm Threading in Swift

时间:2016-12-06 18:08:13

标签: swift realm

我正在尝试在内存领域中使用来存储一些对象。我通常在辅助线程中保存对象并且在主线程上询问对象

我还需要对内存Realm有一个强引用,以避免数据丢失。

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

    }
}

我在辅助线程中调用 _inMemoryRealm ,在主线程上调用 _strongInMemoryRealm ,此配置不起作用。

1 个答案:

答案 0 :(得分:1)

对于初学者,我建议绝对检查以确保您的主线程Realm引用未被释放。我个人会使用singleton object在主线程上存储主要的Realm引用。这将是你的王国留空的最简单原因。

除此之外,当你在后台写一个Realm时,这些更改只会在运行循环的下一次迭代中反映在主线程中。如果您需要在此之前反映更改,则可以致电realm.refresh()以明确请求其提取最新更改。