Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 搜索栏:动态更改结果_Ios_Swift_Xcode_Searchbar - Fatal编程技术网

Ios 搜索栏:动态更改结果

Ios 搜索栏:动态更改结果,ios,swift,xcode,searchbar,Ios,Swift,Xcode,Searchbar,尝试创建一个搜索栏,根据我点击的字母不断更新表视图。就像这里: extension-emotionscontoler:UISearchBarDelegate{ func searchBar searchbutton单击(searchBar:UISearchBar){ 如果searchBar.text!.count>1{ let请求:NSFetchRequest=Array.fetchRequest() let predicate=NSPredicate(格式:“名称包含[cd]]@”,searc

尝试创建一个搜索栏,根据我点击的字母不断更新表视图。就像这里:

extension-emotionscontoler:UISearchBarDelegate{
func searchBar searchbutton单击(searchBar:UISearchBar){
如果searchBar.text!.count>1{
let请求:NSFetchRequest=Array.fetchRequest()
let predicate=NSPredicate(格式:“名称包含[cd]]@”,searchBar.text!)
request.sortDescriptors=[NSSortDescriptor(键:“name”,升序:true)]
loadArray(带:请求,谓词:谓词)
}
}
func searchBar(searchBar:UISearchBar,textDidChange searchText:String){
如果searchBar.text?.count==0{
loadArray()
DispatchQueue.main.async{
searchBar.resignFirstResponder()辞职
}
}
}

我错过了什么?

您需要重新加载tableView的数据

 func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    if searchBar.text?.count == 0 {
        loadArray()

        DispatchQueue.main.async {
          searchBar.resignFirstResponder()
        } else if searchBar.text!.count > 1 {
        let request: NSFetchRequest<Array> = Array.fetchRequest()

        let predicate = NSPredicate(format: "name CONTAINS[cd] %@", searchBar.text!)

         request.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]

         loadArray(with: request, predicate: predicate)
         tableView.reloadData()
    }

    }
func搜索栏(searchBar:UISearchBar,textDidChange searchText:String){
如果searchBar.text?.count==0{
loadArray()
DispatchQueue.main.async{
searchBar.resignFirstResponder()辞职
}否则,如果搜索栏.text!.count>1{
let请求:NSFetchRequest=Array.fetchRequest()
let predicate=NSPredicate(格式:“名称包含[cd]]@”,searchBar.text!)
request.sortDescriptors=[NSSortDescriptor(键:“name”,升序:true)]
loadArray(带:请求,谓词:谓词)
tableView.reloadData()
}
}

在我需要执行此操作的哪一行之后?
加载情感(with:request,predicate:predicate)
这行之后尝试过。同样的事情-在我点击ENTER后重新加载表格如果你想在文本更改中更改数组…你需要在textDidChange中执行此操作并重新加载数据是的,它可以工作!我尝试过很多变体,但没有尝试过这一个。非常接近)谢谢!
 func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    if searchBar.text?.count == 0 {
        loadArray()

        DispatchQueue.main.async {
          searchBar.resignFirstResponder()
        } else if searchBar.text!.count > 1 {
        let request: NSFetchRequest<Array> = Array.fetchRequest()

        let predicate = NSPredicate(format: "name CONTAINS[cd] %@", searchBar.text!)

         request.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]

         loadArray(with: request, predicate: predicate)
         tableView.reloadData()
    }

    }