0

假设我有两个信号

textField1Signal
|> map { value in
    return value.lowercaseString
}
|> on (
    next: { value in
         println("textField1 changed to \(value)");
    }
)


textField2Signal
|> map { value in
    return value.lowercaseString
}
|> on (
    next: { value in
        println("textField2 changed to \(value)");
    }
)

我想要实现的是这样的:

(textField1Signal & textField2Signal)
|> map { value in
    return value.lowercaseString
}
|> on (
    next: { value in
         println("one of the textFields changed to \(value)");
    }
)

关键是我有几个信号,我想以同样的方式处理它们。combineLatest:在这种情况下不起作用,因为首先当只有一个信号触发时它不会被触发,其次我会从两个文本字段中获取值并且不知道哪个实际上导致了调用。

4

1 回答 1

0

在 Jakub Vanos 的帮助下,我找到了以下解决方案

SignalProducer<SignalProducer<String, NSError>, NSError>(values: [textField1Signal, textField2Signal])
|> flatten(.Merge)
|> map { value in
    return value.lowercaseString
}
|> on (
    next: { value in
        println("one of the textFields changed to \(value)");
    }
)
于 2015-08-05T13:20:05.250 回答