@Thomas Goyne Я настроил это, но оно работает только тогда, когда мое приложение находится на переднем плане. Есть идеи?

ался получить данные области в фоновом потоке и добавить блок уведомлений (iOS, Swift).

Основной пример:

    func initNotificationToken() {

        DispatchQueue.global(qos: .background).async {
          let realm = try! Realm()
          results = self.getRealmResults()

        notificationToken = results.addNotificationBlock { [weak self] (changes: RealmCollectionChange) in

          switch changes {
           case .initial:
            self?.initializeDataSource()
            break
          case .update(_, let deletions, let insertions, let modifications):
           self?.updateDataSource(deletions: deletions, insertions: insertions, modifications: modifications)
           break
          case .error(let error):
            fatalError("\(error)")
            break
          }
        }
      }
    }

    func initializeDataSource() {
          // process the result set data 

         DispatchQueue.main.async(execute: { () -> Void in
            // update UI
         })
    }

    func updateDataSource(deletions: [Int], insertions: [Int], modifications: [Int]) {
          // process the changes in the result set data 

         DispatchQueue.main.async(execute: { () -> Void in
            // update UI
         })
    }

При этом я получаю

'Can only add notification blocks from within runloops'

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

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

Любые предложения по лучшей практике, чтобы решить эту проблему?

Ответы на вопрос(1)

Ваш ответ на вопрос