[英]Filter a struct array according to a NSPredicate SWIFT
我有一個UITableView
和UISearchController
。 我想根據UISearchBar.text
的NSPredicate
過濾數據數組(名為:allGames)。
我的代碼只過濾這樣的字符串數組:
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?
}
如何根據游戲名稱和類型過濾數組? 在此先感謝您的幫助。
假設allGames
是一個數組[Games]
–將該結構命名為單數形式Game
–我強烈建議使用本機Swift filter
功能
let searchText = searchController.searchBar.text!
let fileredGames = allGames.filter { $0.name?.range(of: searchText, options: [.caseInsensitive]) != nil
|| $0.type?.range(of: searchText, options: [.caseInsensitive]) != nil }
還考慮將結構中的type
和name
聲明為非可選。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.