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
        })
它成功了