Reactivecocoa: рд╕рдВрдХреЗрддреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рдПрдХ рдореЗрдВ рдорд┐рд▓рд╛рдПрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 29 рдЕрдЧре░ 2016  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ReactiveCocoa/ReactiveCocoa

рдирдорд╕реНрддреЗ,

рдореЗрд░реЗ рдкрд╛рд╕ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ рд╕рд┐рдЧреНрдирд▓рдкреНрд░реЛрдбреНрдпреВрд╕рд░ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд┐рдЧреНрдирд▓рдкреНрд░реЛрдбреНрдпреВрд╕рд░ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдПрдХ рд╕рд░рдгреА рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ ( [SignalProducer<String, NSError>] рдХреЛ SignalProducer<[String], NSError> рдХрдирд╡рд░реНрдЯ рдХрд░реЗрдВ)

рдореИрдВрдиреЗ combineLatest рдЦреЛрдЬрд╛ рдФрд░ рдкрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЯреБрдкрд▓ рдореЗрдВ рд╣реБрдЖред рдХреНрдпрд╛ рдЗрд╕реЗ рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рджред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

SignalProducer(values: [producerA, producerB, producerC]).flatten(.Concat) рдЪрдкрдЯрд╛ рдирд┐рд░реНрдорд╛рддрд╛, рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЗ рдЖрдЧреЗ рдореВрд▓реНрдпреЛрдВ producerB рдХреЗ рдмрд╛рдж producerA рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐

flatMap map + flatten рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╣реИред

рд╕рднреА 6 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

SignalProducerProtocol.merge рдФрд░ collect рдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@andersio рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдВрдпреБрдХреНрдд рд╕рд┐рдЧреНрдирд▓рдкреНрд░реЛрдбреНрдпреВрд╕рд░ рдореЗрдВ рд╕рд┐рдЧреНрдирд▓рдкреНрд░реЛрдбреНрдпреВрд╕рд░ рдХреА рдореВрд▓ рд╕рд░рдгреА рдХреЗ рдХреНрд░рдо рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред collect рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрдХрддреНрд░рд┐рдд рдХрд░рдиреЗ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

@andersio рдореИрдВ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ

arrayOfSignalProducers.reduce(SignalProducer<[String], NSError>.init(value: [])) { (combined, s) in
            return combined.combineLatestWith(s).map({ (arr, str) in
                return arr + [str]
            })
        }

рд▓реЗрдХрд┐рди рдпрд╣ рдмрджрд╕реВрд░рдд рд▓рдЧ рд░рд╣рд╛ рд╣реИ

рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕рдВрдпреЛрдЬрди рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрджреЗрд╢ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рднреА рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ merge рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдЕрдВрддрддрдГ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред

SignalProducer(values: [...]).flatten(.Concat).collect()

@andersio рдореБрдЭреЗ рдЦреЗрдж рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЫреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЫреЛрдбрд╝рд╛ред рдХреНрдпрд╛ рдЖрдк flatten рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдХреБрдЫ рдФрд░ рдареЛрд╕ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдФрд░ рдореИрдВ рдЖрд░рдПрд╕реА 4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдпрд╣ рдлреНрд▓реИрдЯрдореИрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж !

SignalProducer(values: [producerA, producerB, producerC]).flatten(.Concat) рдЪрдкрдЯрд╛ рдирд┐рд░реНрдорд╛рддрд╛, рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЗ рдЖрдЧреЗ рдореВрд▓реНрдпреЛрдВ producerB рдХреЗ рдмрд╛рдж producerA рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐

flatMap map + flatten рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

tunidev picture tunidev  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

BrettThePark picture BrettThePark  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

iby picture iby  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

v-silin picture v-silin  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tomj picture tomj  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ