簡體   English   中英

減少屬性數組 ReactiveSwift

[英]Reduce array of properties ReactiveSwift

我有一個Property<Int>數組,我需要減少它們以獲得最后輸入的總和(它基本上是來自不同 SDK 的未讀通知計數器)並將其放入 new Property<Int> ,我試過這個

let unseen: Property<Int> = .init(
            initial: 0,
            then: countExtractor(counters: counters)
        )
     func countExtractor(counters: [Property<Int>]) -> SignalProducer<Int?, Never> {
    SignalProducer { observer, lifetime in
        guard !lifetime.hasEnded else {
            return
        }
        let producers = counters.map { $0.producer }
        lifetime += SignalProducer<SignalProducer<Int, Never>, Never>(producers)
            .flatten(.latest)
            .reduce(0) { previous, current in
                return (previous ?? 0) + current
            }
            .start(observer)
    }
}

它正在工作,但值沒有更新(當我硬編碼只有一個屬性時,一切正常)

答案很簡單

 let properties = Property<Int>.combineLatest(counters)
let count = properties?.producer.map {
    $0.reduce(0, +)
}
guard let count = count else {
    return SignalProducer(value: 0)
}
return count

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM