Как мне добавить внешний массив в мой Rx Observable? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть Observable, и я бы хотел, чтобы filter elements существовал во внешнем array. Проблема в том, что element, очевидно, нельзя сравнивать напрямую с array, поэтому я loop array и затем делаю сравнение. Это не работает, потому что оператор return должен находиться за пределами for l oop.

    func scanAndFilterCoreData() -> Observable<BleHandler.BlePeripheral> {

        let request = NSFetchRequest<LocalDoorCoreDataObject>(entityName: "LocalDoorCoreDataObject")
        let result = self.coreDataHandler.fetchAll(fetchRequest: request)

        return bleHandler.scan(serviceId: AppSettings.discoverServiceId)
            .flatMap{ Observable.from($0) }
            .filter { value in
                for coreData in result {
                    return value.peripheral.identifier.uuidString == coreData.dPeripheralId
                }
        }
    }

Будучи новичком в Rx Я думаю, что должен быть какой-то способ включить внешний array в Observable как секунду parameter, или как это сделать?

1 Ответ

1 голос
/ 16 апреля 2020

Вы должны использовать карту вместо фильтра:

.map { value in
    let uuidString = value.peripheral.identifier.uuidString
    return result.filter { $0.dPeripheralId == uuidString }
}
...