私はUITableView
とUISearchController
を持っています。私はUISearchBar.text
のNSPredicate
に従ってデータ配列(allGamesという名前)をフィルタリングしたいと思います。NSPredicate SWIFTに従って構造体配列をフィルタリングします
私のコードは次のように文字列の配列をフィルタリング:ここ
func updateSearchResults(for searchController: UISearchController) {
filteredGames.removeAll(keepingCapacity: false)
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)
let array = (allGames).filtered(using: searchPredicate)
filteredGames = array as! [String]
self.tableView.reloadData()
}
私は私の配列をフィルタリングすることができます。しかし、私がこの構造体を作成する場合:
struct Games {
var name: String?
var type: String?
var image: UIImage?
}
ゲームの名前と種類に従って配列をフィルタリングするにはどうすればよいですか?あなたの助けを前にありがとう。構造体は、単数形Game
で命名されることになっている方法によって - - allGames
を想定し
[Search Bar Swift 3 - コレクションで/ contains演算子を使用できません](https://stackoverflow.com/questions/41308007/search-bar-swift-3-cant-use-in- contains-operator-with-collection) - 構造体の配列でNSPredicateを使用することはできません。 –
関連項目[Swift - UISearchControllerとNSPredicateを使用して構造体の配列で検索する](https://stackoverflow.com/questions/32556328/swift-search-using-uisearchcontroller-and-nspredicate-with-an-array-of-構造体)または[構造体の迅速検索](https://stackoverflow.com/questions/34360226/search-for-struct-in-swift)を参照してください。 –
ああ、私は多くの質問を読んで、これらの質問を見つけられませんでした! –