Запрос области не выполняется в фоновом режиме - PullRequest
0 голосов
/ 27 октября 2019

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

Я видел в документах, что если я добавлю наблюдателя в набор результатов, Realm сделает это в фоновом режиме. Но запросы все еще блокируют мой основной поток (т. Е. Я получаю заметную задержку при вставке нескольких абзацев текста и запросе каждого слова).

Я также видел в документах, что если я пытаюсь использовать набор результатов до сообщения .initial, Realm переходит в основную очередь. Я не думаю, что я делаю это в коде ниже, либо.

Может быть, я обесценил токены?

Можно ли заставить Realm остаться в фоновом потоке?

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

  print("db: hit \(word)")

    let results = Shared.instance
        .realm
        .objects(google10kWords.self).filter("word == \"\(word.lemma.lowercased())\"")


    let notificationToken = results.observe { (change) in
            switch change {
            case .initial:
                  if let rank = results.first?.rank.value {
                        let rankPct = Float((Float(rank)/10000.0))
                          complete(rankPct)
                        } else {
                          complete(1.0)
                  }
            case .update(_, deletions: _, insertions: _, modifications: _):
                print("db: update")
            case .error(let error):
                print("db: Error \(error)")

              }
    }

    DispatchQueue.main.asyncAfter(deadline: .now()+1.2) {
        notificationToken.invalidate()
    }

 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...