在不同的线程中访问领域和过滤器结果

Accessing realm and filter results in different threads

大家好!

我 运行 遇到了一个大问题。我正在尝试在主线程中访问领域数据,但也因为我需要对数据进行大量同步操作,例如更新、插入等,所以我决定搜索是否有可能异步执行所有这些操作,但是我尝试实施的每种方法都遇到了不同的错误。

我正在按如下方式创建领域数据库:

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)

在主线程中执行所有这些更新插入操作会将我的内存增加到 1GB,这很糟糕。使它们异步可能是一个解决方案,但有不同的线程,这是一个问题。

如果你能帮助我,我会很高兴。

extension Realm {
class func realmInstance() -> Realm? {
   let realm = try Realm(configuration: Realm.Configuration(
                  fileURL: fileURL,
                  encryptionKey: nil,
                  schemaVersion: schemaVersion,
                  objectTypes: objectTypes))
   return realm
}

访问:

DispatchQueue(label: "background").async {
    Realm.realmInstance()?.objects(SPUserModel.self)
}