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
哦,我的上帝,你是一个巫师。感谢这么多!这个功能是一个完全的噩梦... –