日々精進

新しく学んだことを書き留めていきます

ReactiveCocoaで複数のシグナルをまとめたシグナルを作る

モデルのプロパティのどれかが変更されたらビューを更新するようにしたい。
そういう場合はこんな感じでcombineLatestでシグナルをまとめる。startWith:nilを付けないと、一度目の変更ではシグナルが発生しないので注意。

- (RACSignal *)changeSignal {
    return [RACSignal combineLatest:@[
            [RACAble(self.id) startWith:nil],
            [RACAble(self.code) startWith:nil],
    ]];
}

こんな感じでsubscribeすると何かが変わったらすぐリロードされるようにできる。

    [self.currencyPairs.changeSignal subscribeNext:^(id x) {
        [self.tableView reloadData];
    }];

参考:ios - RACSignal combineLatest using multiple UIControls - Stack Overflow