簡體   English   中英

根據NSPredicate SWIFT過濾結構數組

[英]Filter a struct array according to a NSPredicate SWIFT

我有一個UITableViewUISearchController 我想根據UISearchBar.textNSPredicate過濾數據數組(名為: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 }

還考慮將結構中的typename聲明為非可選。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM