ios - 在不同的线程中访问 Realm 和过滤器结果

标签 ios swift multithreading realm

大家好!

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

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

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)
}

关于ios - 在不同的线程中访问 Realm 和过滤器结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58498909/

相关文章:

c# - C#中的线程

iphone - 对 NSString 进行排序

ios - UITableView reloadData() 不刷新显示的单元格

ios - FEventType.ChildAdded 事件只触发一次

swift - 带有事件圆圈的自定义 TabBarController

swift - 类型名称后预期的成员名称或构造函数调用

c# - 如何锁定具有相同ID的对象?

multithreading - node.js +express +threads_a_gogo 阻塞请求

ios - Xcode无法运行iOS模拟器

ios - 在 UITableView 中的 UINib 中重新加载 UITableView