5

こんにちは、RxSwift ライブラリを理解し、より優れた機能的なコードを書こうとしています。

現在、私は非常に基本的な問題で立ち往生しています。次のタイプの変数を取得したとしましょうVariable<[CiteModel?]>:

var allCites: Variable<[CiteModel?]> = Variable([])
var shownCites: Variable<[CiteModel?]> = Variable([])

allCitesここで、特定のテキストを含む配列からすべての引用をフィルタリングし、それらを に追加したいと考えていshownCitesます。

これは私が試したものですが、フィルターブロック内が期待どおりで$0[CiteModel?] ない CiteModel?ため、コンパイルできません。私が何を間違えたのか説明してもらえますか?

private func filterCitesByQuery(query: String) {
    self.shownCites = self.allCites.asObservable().filter {
        $0?.cite.containsString(query)
    }
}

上記のコードを実行したときのエラー:

Cannot assign value of type 'Observable<[CiteModel?]>' (aka 'Observable<Array<Optional<CiteModel>>>') to type 'Variable<[CiteModel?]>' (aka 'Variable<Array<Optional<CiteModel>>>')
4

3 に答える 3

2

このコードで動作するようになりました:

private func filterCitesByQuery(query: String) {
     self.shownCites.value = self.allCites.value.filter {
         return $0?.cite.containsString(query) ?? false
     }
 }

ただし、元のコードのどこが間違っていたのかを知りたいです。だから誰かが私に答えを持っていれば、これは本当にありがたいです.

于 2016-03-24T00:45:09.813 に答える