我在Parse.com上有一个应用程序。我在解析数据中使用UISearchController
。它的工作原理很好。但UISearchController
在解析数据中找不到前四个数据。我删除了解析中的所有数据并再次加载了新数据,但错误就在那里。
示例:我在解析数据中搜索了iPhone Original,但我没有找到。但我可以找到其他数据。 请帮帮我。
已更新:
我的UISearchController
func updateSearchResultsForSearchController(searchController: UISearchController) {
self.dataSearchResults?.removeAll(keepCapacity: false)
var searchText = searchController.searchBar.text
var query: PFQuery = PFQuery(className: "NewsNow")
if searchController.active == true {
query.whereKey("nameNews", matchesRegex: searchText, modifiers: "i")
self.tableView.reloadData() // 4 win!!!
}
query.findObjectsInBackgroundWithBlock { (results:[AnyObject]?, error: NSError?) -> Void in
self.dataSearchResults = results as? [PFObject]
self.tableView.reloadData()
}
println(searchText)
}
func searchBar(searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
updateSearchResultsForSearchController(searchController)
}
func didDismissSearchController(searchController: UISearchController) {
self.dataSearchResults = nil //nil
self.tableView.reloadData()
}
答案 0 :(得分:1)
我不知道如何解决你的问题。但我确实有用于在UITableView
中搜索的代码。我相信你可以根据自己的需要开展这项工作!
@IBOutlet var tableView:UITableView!
@IBOutlet var searchBarObj:UISearchBar!
var is_searching:Bool!
var dataArray:NSMutableArray!
var searchingDataArray:NSMutableArray!
override func viewDidLoad() {
is_searching = false
dataArray = ["Apple", "Samsung", "iPHone", "iPad", "Macbook", "iMac" , "Mac Mini"]
searchingDataArray = []
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
if is_searching == true{
return searchingDataArray.count
}else{
return dataArray.count
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell
if is_searching == true{
cell.textLabel?.text = searchingDataArray[indexPath.row] as NSString
}else{
cell.textLabel?.text = dataArray[indexPath.row] as NSString
}
return cell
}
func searchBar(searchBar: UISearchBar, textDidChange searchText: String){
if searchBar.text.isEmpty{
is_searching = false
tableView.reloadData()
} else {
println(" search text %@ ",searchBar.text as NSString)
is_searching = true
searchingDataArray.removeAllObjects()
for var index = 0; index < dataArray.count; index++
{
var currentString = dataArray.objectAtIndex(index) as String
if currentString.lowercaseString.rangeOfString(searchText.lowercaseString) != nil {
searchingDataArray.addObject(currentString)
}
}
tableView.reloadData()
}
}