Swift 在CollectionView中搜索对象
我有这样的英雄目标:Swift 在CollectionView中搜索对象,swift,Swift,我有这样的英雄目标: import Foundation import UIKit class Hero { var name: String! var image: UIImage? { return UIImage(named: "\(name)")! } required init(name: String) { self.name = name } } heroesFiltered = heroes.filt
import Foundation
import UIKit
class Hero {
var name: String!
var image: UIImage? {
return UIImage(named: "\(name)")!
}
required init(name: String) {
self.name = name
}
}
heroesFiltered = heroes.filter({ (hero) -> Bool in
let nameText: NSString = hero.name
return (nameText.rangeOfString(searchText, options: NSStringCompareOptions.CaseInsensitiveSearch).location) != NSNotFound
})
我想在搜索栏上搜索英雄,以下是我的搜索功能:
func filterContentForSearchText(searchText:String) {
let searchBarTemp = searchBar
heroesFiltered = heroes.filter { (hero) -> Bool in
if hero.name.lowercaseString == searchBarTemp!.text?.lowercaseString {
return true
}
return false
}
}
但当我搜索时,它根本没有被过滤,当我在搜索栏中更改文本时,数组是空的
我还尝试使用NSPredicate进行搜索:
func filterContentForSearchText(searchText:String) {
heroesFiltered = []
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", self.searchBar!.text!)
let array = (heroes as NSArray).filteredArrayUsingPredicate(searchPredicate)
heroesFiltered = array as? [Hero]
}
但它在这条线上崩溃了:
let array = (heroes as NSArray).filteredArrayUsingPredicate(searchPredicate)
我试过这样做:
import Foundation
import UIKit
class Hero {
var name: String!
var image: UIImage? {
return UIImage(named: "\(name)")!
}
required init(name: String) {
self.name = name
}
}
heroesFiltered = heroes.filter({ (hero) -> Bool in
let nameText: NSString = hero.name
return (nameText.rangeOfString(searchText, options: NSStringCompareOptions.CaseInsensitiveSearch).location) != NSNotFound
})
它成功了