【发布时间】:2019-10-22 07:13:20
【问题描述】:
大家好!
我遇到了一个大问题。我正在尝试在主线程中访问领域数据,但由于我需要对数据进行大量同步操作,例如更新、插入等,我决定搜索是否有可能异步执行所有这些操作但是对于我尝试实施的每种方法,我都会遇到不同的错误。
我正在按如下方式创建领域数据库:
realm = try Realm(configuration: Realm.Configuration(
fileURL: fileURL,
encryptionKey: nil,
schemaVersion: schemaVersion,
objectTypes: objectTypes))
访问数据如下:
guard let realm = realm else {
return nil
}
let results = realm.objects(SPUserModel.self)
return Array(results)
在主线程中执行所有这些 upsert 操作会将我的内存提高到 1GB,这很糟糕。使它们异步可能是一种解决方案,但存在不同的线程,这是一个问题。
如果你能帮我解决这个问题会很高兴。
【问题讨论】:
-
这里可能还有问题;以数组
return Array(results)的形式返回结果会断开这些对象与 Realm 的连接,并且它们将不再实时更新;它们在观察时不会更新,并且不会为它们触发事件; Array 与 Results 对象不同。此外,正如您所发现的,Realm 结果是延迟加载的,并且在需要它们之前不会占用内存 - 但是,将它们转换为数组会占用每个对象的内存。
标签: ios swift multithreading realm