0
所以我的目標是爲我的tableView創建一個搜索欄。我的數據是一個2D對象數組,「GiftData」。這是一個非常簡單的對象,它只有兩個屬性是「gift:」和「picture:」,我只想通過「gift:」進行搜索,這只是一個字符串。 它是一個二維數組的原因是因爲我使用單獨的數組來區分tableView。 爲了解決這個問題,我不能爲了我的生活得到這個過濾代碼來編譯,請幫忙。 禮物數據對象:在Swift 3中過濾「2D」自定義對象數組
class GiftData {
var gift = ""
var picture: UIImage
init (gift: String, picture: UIImage) {
self.gift = gift
self.picture = picture
}
func match (search: String) -> Bool {
return (gift.caseInsensitiveCompare(search) == ComparisonResult.orderedSame)
}
static func createData() -> [[GiftData]] {
return [[GiftData(gift: "necklace", picture: UIImage(named: "heart-emoji-png-2")!)], [GiftData(gift: "tie", picture: UIImage(named: "Hugging_Face_Emoji_2028ce8b-c213-4d45-94aa-21e1a0842b4d_large")!)], [GiftData(gift: "cane", picture: UIImage(named: "ios_emoji_kissing_face_with_closed_eyes")!)], [GiftData(gift: "shoes", picture: UIImage(named: "Nerd_with_Glasses_Emoji")!)]]
}
過濾代碼:
extension SecondViewController: UISearchResultsUpdating, UISearchDisplayDelegate {
func updateSearchResults(for searchController: UISearchController) {
filterForSearch(searchText: searchController.searchBar.text!)
}
func filterForSearch (searchText: String) {
giftResults = giftData.filter{(dataArray: [GiftData]) -> Bool in
return dataArray.filter({(gift) -> Bool in
return gift.match(search: searchText)})
}
giftTableView.reloadData()
}
它說:「不能與類型‘((GiftData)拋出布爾)’ 參數列表調用濾波器玩弄兜了幾個小時後。 ,我只是似乎無法瞭解我這裏處理
它仍然給錯誤並指向.filter函數。 「((GiftData)throws - > Bool)'不能使用類型參數列表調用過濾器 此外,」giftResults「是一個空的2d數組來存放過濾結果giftData是由」創建數據()「函數,感謝您的回覆! –
請再次看看我的答案,您可以使用」地圖「過濾一個二維數組到另一個 – Simbos
哦,我的上帝,你是一個巫師。感謝這麼多!這個功能是一個完全的噩夢... –