将searchText过滤为tableView

时间:2016-12-23 00:34:13

标签: ios swift firebase firebase-realtime-database uisearchbar

现在我正在使用以下

let data = ["New York, NY", "Los Angeles, CA" . . .]

var filteredData: [String]!

filteredData = data

但我希望使用具有几乎相同结构的Firebase,使用此

var data = [Categories]()

(这是categories

struct Categories {

let key:String!
let content:String!
let itemRef:FIRDatabaseReference?

init (content:String, key:String = "") {
    self.key = key
    self.content = content
    self.itemRef = nil
}

init (snapshot:FIRDataSnapshot) {
    key = snapshot.key
    itemRef = snapshot.ref

    if let CategoriesContent = snapshot.value!["content"] as? String {
        content = CategoriesContent
    } else {
        content = ""
    }
}

}

因此,当我搜索某些内容时,这些行应该过滤掉所有不正确的内容

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {

    // Unhide tableview, this will be changed to another method
    tableView.hidden = false

    filteredData = searchText.isEmpty ? data : data.filter({(dataString: String) -> Bool in
        // If dataItem matches the searchText, return true to include it
        return dataString.rangeOfString(searchText) != nil
    })

    tableView.reloadData()
}

但由于filter({(dataString: String)只接受字符串,因此不起作用

问题:有没有其他方法可以将我的Firebase结构替换为字符串?

非常感谢!

1 个答案:

答案 0 :(得分:1)

在UISearchResultsUpdating和Filtering部分中,

this tutorial非常清楚。