迅速-カスタムクラスをフィルタリングする方法は?

アムロ・ジェイバー

string、url、intの値を使用してクラスを作成し、チャネル配列を作成しましたが、チャネル配列を適切にフィルタリングできません。

これは私のクラスです:

class Channel {
    var name: String
    var url: URL
    var icon: URL?
    var priority: Int

    init(name:String, url:URL, icon:URL?, priority:Int) {
        self.name = name
        self.url = url
        self.icon = icon
        self.priority = priority
    }
}

私はこの機能を試していましたが、機能しません!

public var channels: [Channel] = []
    var filteredData = [Channel]()
    var searching = false
...

 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        if searching {
            return filteredData.count
        }
        return channels.count

    }

   func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        if let channel = channels[indexPath.item] as Channel? {
            if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as? CollectionViewCell {

                if searching {
                    cell.name.text = filteredData[indexPath.row].name
                    print("fil \(filteredData[indexPath.row].name)")
                } else {
                    cell.name.text = channel.name
                    print("not \(channel.name)")

                }


                if let iconUrl = channel.icon {
                    cell.icon.cacheSetImageFromURL(iconUrl)
                } else {
                    cell.icon.image = #imageLiteral(resourceName: "tv1600")
                }
                return cell
            }
        }

        return UICollectionViewCell()

    }

...

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

        if searchBar.text == nil || searchBar.text == "" {
            searching = false
            collectionView.reloadData()
        }else{
            print("searching")
            searching = true

            filteredData = channels.filter({$0.name.lowercased().prefix(searchText.count) == searchText.lowercased()})

            collectionView.reloadData()
        }
    }

期待される結果は、ColctionViewの既存のコンテンツを含むフィルター処理された配列を示しています。

カムラン

cellForItemAt以下のように更新します。

 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CollectionViewCell

        let channel = self.searching ? filteredData[indexPath.row] : channels[indexPath.item]
        cell.name.text = channel.name
        print("fil \(channel.name)")

        if let iconUrl = channel.icon {
            cell.icon.cacheSetImageFromURL(iconUrl)
        } else {
            cell.icon.image = #imageLiteral(resourceName: "tv1600")
        }
        return cell
  }

このline(if let channel = channels[indexPath.item] as Channel? {)は、channel検索中でもすべての要素を含むフィルター処理されていない配列から常にオブジェクトを取得するという問題を引き起こしていますしたがって、を正しく表示channelするにはarray、上記の対応するオブジェクトからオブジェクトを取得する必要がありますresults

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

レルム-クラスター化されたマップビューを迅速にフィルタリングする

分類Dev

プログラムでカスタム太字フォントを設定する方法-迅速

分類Dev

JSONデータを迅速にフィルタリングする

分類Dev

迅速にカスタムフォントを使用する

分類Dev

コントロールのテキストフィールド、ボタンなどを使用して迅速にカスタムビューをプログラムで作成する方法

分類Dev

コアグラフィックスAPIからウィンドウリストを迅速に取得する方法

分類Dev

迅速にグーグルマップでカスタムiconViewを作成する方法は?

分類Dev

迅速なカスタムUIView

分類Dev

UIButtonのカスタムクラスをプログラムで迅速に割り当てる方法

分類Dev

ObjectiveCのカスタムモデルインスタンスを迅速なクラスからIDインスタンスに保存する

分類Dev

Facebook SDKは、カスタムログインを迅速に処理する方法を教えてください。

分類Dev

UITableViewCellを迅速にスタイリングする方法はありますか?

分類Dev

迅速なカスタムボタン

分類Dev

迅速なコードを使用してボタンクリックでカスタムUITableViewCellにUIAlertControllerを表示する方法は?

分類Dev

構造体から迅速にフィルタリングする方法

分類Dev

カスタムファーストレスポンダーを迅速に辞任する方法

分類Dev

迅速にCIImageフィルターを使用して白黒のカラーリングを制御します

分類Dev

StackViewの各ボタンに個別のセレクター/リスナーをプログラムで迅速に追加する方法4.2

分類Dev

迅速にAVPlayerにカスタムコントロールを追加する

分類Dev

迅速なカスタムUIBezierPath(アークトラブル)

分類Dev

エラー:カスタムtableViewセルをxibファイルに迅速に登録する

分類Dev

迅速なiosでプログラム的に複数のテキストフィールドを追加する方法

分類Dev

ボタンクリックでテキストフィールドの選択されたテキストを取得する方法は?pickerviewは、テキストフィールドへの入力ビューとして設定されます。迅速

分類Dev

リスナーパターンを迅速に実装する方法

分類Dev

迅速に正規表現で辞書キーをフィルタリングする方法

分類Dev

カスタムアクセサリビューボタンのアクションは何ですか-迅速

分類Dev

迅速:非同期タスク+完了

分類Dev

UIImagesを迅速にロスレスリースケーリングする方法は?

分類Dev

カスタムセルの繰り返しは、コアデータで迅速にラベルを付けます

Related 関連記事

  1. 1

    レルム-クラスター化されたマップビューを迅速にフィルタリングする

  2. 2

    プログラムでカスタム太字フォントを設定する方法-迅速

  3. 3

    JSONデータを迅速にフィルタリングする

  4. 4

    迅速にカスタムフォントを使用する

  5. 5

    コントロールのテキストフィールド、ボタンなどを使用して迅速にカスタムビューをプログラムで作成する方法

  6. 6

    コアグラフィックスAPIからウィンドウリストを迅速に取得する方法

  7. 7

    迅速にグーグルマップでカスタムiconViewを作成する方法は?

  8. 8

    迅速なカスタムUIView

  9. 9

    UIButtonのカスタムクラスをプログラムで迅速に割り当てる方法

  10. 10

    ObjectiveCのカスタムモデルインスタンスを迅速なクラスからIDインスタンスに保存する

  11. 11

    Facebook SDKは、カスタムログインを迅速に処理する方法を教えてください。

  12. 12

    UITableViewCellを迅速にスタイリングする方法はありますか?

  13. 13

    迅速なカスタムボタン

  14. 14

    迅速なコードを使用してボタンクリックでカスタムUITableViewCellにUIAlertControllerを表示する方法は?

  15. 15

    構造体から迅速にフィルタリングする方法

  16. 16

    カスタムファーストレスポンダーを迅速に辞任する方法

  17. 17

    迅速にCIImageフィルターを使用して白黒のカラーリングを制御します

  18. 18

    StackViewの各ボタンに個別のセレクター/リスナーをプログラムで迅速に追加する方法4.2

  19. 19

    迅速にAVPlayerにカスタムコントロールを追加する

  20. 20

    迅速なカスタムUIBezierPath(アークトラブル)

  21. 21

    エラー:カスタムtableViewセルをxibファイルに迅速に登録する

  22. 22

    迅速なiosでプログラム的に複数のテキストフィールドを追加する方法

  23. 23

    ボタンクリックでテキストフィールドの選択されたテキストを取得する方法は?pickerviewは、テキストフィールドへの入力ビューとして設定されます。迅速

  24. 24

    リスナーパターンを迅速に実装する方法

  25. 25

    迅速に正規表現で辞書キーをフィルタリングする方法

  26. 26

    カスタムアクセサリビューボタンのアクションは何ですか-迅速

  27. 27

    迅速:非同期タスク+完了

  28. 28

    UIImagesを迅速にロスレスリースケーリングする方法は?

  29. 29

    カスタムセルの繰り返しは、コアデータで迅速にラベルを付けます

ホットタグ

アーカイブ