рдирдорд╕реНрддреЗ,
рдореЗрд░реЗ рдкрд╛рд╕ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ рд╕рд┐рдЧреНрдирд▓рдкреНрд░реЛрдбреНрдпреВрд╕рд░ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд┐рдЧреНрдирд▓рдкреНрд░реЛрдбреНрдпреВрд╕рд░ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдПрдХ рд╕рд░рдгреА рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ ( [SignalProducer<String, NSError>]
рдХреЛ SignalProducer<[String], NSError>
рдХрдирд╡рд░реНрдЯ рдХрд░реЗрдВ)
рдореИрдВрдиреЗ combineLatest
рдЦреЛрдЬрд╛ рдФрд░ рдкрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЯреБрдкрд▓ рдореЗрдВ рд╣реБрдЖред рдХреНрдпрд╛ рдЗрд╕реЗ рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рджред
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
рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
SignalProducer(values: [producerA, producerB, producerC]).flatten(.Concat)
рдЪрдкрдЯрд╛ рдирд┐рд░реНрдорд╛рддрд╛, рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЗ рдЖрдЧреЗ рдореВрд▓реНрдпреЛрдВproducerB
рдХреЗ рдмрд╛рджproducerA
рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐flatMap
map
+flatten
рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╣реИред