UISearchController 找不到前四个数据
UISearchController doesn't find first four data
我有一个 Parse.com 的应用程序。我在解析数据时使用 UISearchController
。它的效果很好。但是 UISearchController
在解析数据中找不到前四个数据。我删除了解析中的所有数据并再次加载新数据,但错误仍然存在。
示例:我在解析数据中搜索了 iPhone 原文,但没有找到。但是我可以找到其他数据。
请帮助我。
已更新:
我的代码 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()
}
我不知道如何解决你的问题。但我确实有用于在 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()
}
}
我有一个 Parse.com 的应用程序。我在解析数据时使用 UISearchController
。它的效果很好。但是 UISearchController
在解析数据中找不到前四个数据。我删除了解析中的所有数据并再次加载新数据,但错误仍然存在。
示例:我在解析数据中搜索了 iPhone 原文,但没有找到。但是我可以找到其他数据。 请帮助我。
已更新:
我的代码 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()
}
我不知道如何解决你的问题。但我确实有用于在 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()
}
}