Доступ к области и фильтрации результатов в разных потоках - PullRequest
1 голос
/ 22 октября 2019

Привет всем !

Я столкнулся с большой проблемой. Я пытаюсь получить доступ к данным области в главном потоке, но также потому, что мне нужно выполнить много операций синхронизации с данными, такими как обновление, вставка и т. Д. Я решил поискать, есть ли возможность выполнять все эти операции асинхронно, ноЯ получаю разные ошибки для каждого метода, который пытаюсь реализовать.

Я создаю базу данных области следующим образом:

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 в mainthread увеличит мою память до 1 ГБ, что плохо. Создание их асинхронно может быть решением, но существуют разные потоки, и это проблема.

Буду рад, если вы поможете мне с этим.

1 Ответ

0 голосов
/ 22 октября 2019
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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...