2017-09-22 5 views
0

SignalProducerのセットのいずれかが変更されたときに、どのようにして1ブロックのコードをトリガーするのですか?言い換えれば、どのように私は私の現在の冗長コードを取り除くん:複数のシグナルプロデューサーのいずれかからブロックをトリガーするには?

property1.producer.startWithValues { (value) in 
    // do stuff with property1.value and property2.value 
} 

property2.producer.startWithValues { (value) in 
    // do the same stuff with property1.value and property2.value 
} 
+0

コンテキストを少し追加できますか?たとえば、コードブロックは両方のプロパティの値を使用するか、クロージャに渡される値だけを使用しますか? – jjoelson

+0

申し訳ありませんが、ブロックは両方のプロパティの値を使用します。私は明確にするために上記を修正しました。 – ozool

答えて

0

let prop = property1.combineLatest(with: property2) 
prop.producer.startWithValues { (val1, val2) in 
    // do stuff here 
} 

どちらかの値が変更された場合、ブロックがトリガされます。

+0

完璧、ありがとう。 – ozool

0

あなたは、変数として、コードのブロックを保存することができ、あなたは単にproperty1.producer.startWithValuesにその変数を割り当てます。あなたは両方の値を含む新しいプロパティを作成するためにcombineLatestを使用することができます

+0

ブロックを変数として保存して、両方の場所で使用することを意味しますか?いずれかのプロパティが変更されたときに単一のブロックを実行させる方法があるように思えます。「いずれかのプロパティが変更された場合、このブロックを実行する」と言う何らかの方法... – ozool

関連する問題