【RxSwift】配列(Array)の値が変更した時に通知を受け取る
はじめに
RxSwift勉強中です。
誤りがあったり設計としてもっと優れたクラスがある場合などは
コメント欄でご教示いただきたいです。
実現したいこと
最終的にUITableViewを表示している箇所で、
TableViewで表示に使っている配列に変化があった場合、
そのTableViewを自動で更新されるようにしたいです。
配列の保持の方法
// 配列を監視対象とする。 イベントを受け取る
let relayβ = BehaviorRelay<[TweetModel]>(value: [TweetModel(user: "user0", tweet: "tweet0")])
let newValue = relayβ.value + [TweetModel(user: "user1", tweet: "tweet1")]
relayβ.accept(newValue)
print(relayβ)
let printValue = relayβ.value
print(printValue)
// 中身取り出して確認する
relayβ.subscribe(onNext: { _ in
print("値が変わった")
for item in relayβ.value {
print(item)
}
})
.disposed(by: disposeBag)
BehaviorRelayは最後の値を持っているので、
relay.accept(※value)を呼び出すと、relayの中身が上書きされます。
上記コードは作成したデータモデルTweetModel型を格納する配列と宣言し、初期値で1件のデータモデルを入れてます。
単純にarray.append(new Element)の感覚でrelay.accept()を呼び出すと、
上書きされて、以前の値は消えてしまいます。
なので、relay.value(getのみなので値をセット)から現在の値を取得し、
上書きする内容と結合したものをrelay.acceptで呼び出しています。
後半のコードでは、問題なく中身がtweetModel型が2件入っていることを
確認している処理になります。
私は読んでいませんが、RxSwiftの書籍などありますよ。