我有一个Observable
,并希望它存在于外部filter
中的elements
array
中。问题在于,element
显然不能直接与array
进行比较,因此我将loop
与array
进行比较。这不起作用,因为return语句需要在for
循环之外。
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
中,否则该如何做?
您应该使用地图而不是过滤器:
.map { value in
let uuidString = value.peripheral.identifier.uuidString
return result.filter { $0.dPeripheralId == uuidString }
}