sono le risposte valide anche per la versione Swift?
Immagine un SignalPipe che osserva una modifica su una proprietà dell'oggetto. Quando si sottoscrive il segnale da diversi altri oggetti, ad esempio queue.queueCountSignal.observeNext({...})
, il blocco di osservazione verrà eseguito la prossima volta che la proprietà cambia. C'è un modo per chiedere il valore corrente o attivare observNextBlock?
Non voglio usare un SignalProducer (che può essere avviato in modo esplicito) perché ciò significherebbe che ho bisogno di raccogliere i blocchi observeNext
da ogni oggetto il segnale è necessario. Inoltre, non voglio creare diversi produttori di segnali per la stessa cosa - o è effettivamente voluto?
Ecco il codice di esempio per rendere più chiaro
import ReactiveCocoa
class SwipingQueueWithSignals<T> : SwipingQueue<T> {
override var count: Int {
didSet(oldQueueCount) {
let newQueueCount = self.count
queueCountSignalObserver.sendNext(newQueueCount)
}
let queueCountSignal: Signal<Int, NoError>
private let queueCountSignalObserver: Observer<Int, NoError>
init() {
(self.queueCountSignal, self.queueCountSignalObserver) = Signal<Int, NoError>.pipe()
super.init()
}
}
// Something like this
queue.queueCountSignal.
.observeNext { next in print(next) }
.lookupCurrentValueNow()
fonte
2016-02-10 08:53:23
Grazie. Volevo solo essere sicuro. A volte c'è la tentazione di non convertire tutto nel mondo ReactvieCocoa. –
Ma posso fare: RAC (self.number) = signal; e poi usare self.number in qualche posto. –
@ LeszekŻarna Sì, questo aggiornerà 'self.number' con l'ultimo valore dal segnale, ma dipende ancora dal concetto di _subscription_ sotto. Capire come funzionano le iscrizioni renderà il resto del RAC molto più facile da raccogliere. –