Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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 UICollectionView即使重新加载数据也不会重新加载搜索结果_Ios_Swift_Iphone_Xcode - Fatal编程技术网

Ios UICollectionView即使重新加载数据也不会重新加载搜索结果

Ios UICollectionView即使重新加载数据也不会重新加载搜索结果,ios,swift,iphone,xcode,Ios,Swift,Iphone,Xcode,我可以使用搜索功能过滤出搜索结果,但它不会在iPhone emulator上显示这些搜索结果。它会在我拥有的iPhone(iPhone 5)上显示结果,但不会在模拟器上显示。我不知道为什么在我键入时集合视图没有更新。阵列中的项目正在显示,因为我第一次导航到该屏幕时可以看到它们 问题是您没有设置委托,因此不会调用搜索栏回调方法 如果使用SearchController,则需要将此行添加到viewDidLoad navigationItem.searchController?.searchBar.

我可以使用搜索功能过滤出搜索结果,但它不会在iPhone emulator上显示这些搜索结果。它会在我拥有的iPhone(iPhone 5)上显示结果,但不会在模拟器上显示。我不知道为什么在我键入时集合视图没有更新。阵列中的项目正在显示,因为我第一次导航到该屏幕时可以看到它们


问题是您没有设置委托,因此不会调用搜索栏回调方法

如果使用SearchController,则需要将此行添加到
viewDidLoad

navigationItem.searchController?.searchBar.delegate = self
否则,将searchBar委托设置为它

searchBar.delegate = self

注释:在CAMEL案例命名约定之后,您应该将<代码>数组> /COD>名称改为更为描述性的名称,如“代码> FieldDealEngs< /Calp>

”,命名一个属性“代码>数组非常令人困惑,因为它是SWIFT基础类型的名称。属性应该以小写字母(
数组
)开头,但这也不是一个非常具有描述性的属性名称。类似地,过滤器块的参数应该是
product
。在这段代码中不需要异步调度,因为您已经在主队列上了。您是否使用调试断点来查看发生了什么?是的,它正在正确地访问阵列,但我不确定它是否正确地将其过滤掉。当我在swift 3上运行它时,过滤器工作正常,但我刚刚将它升级为SWIFM 5,我遇到了这个问题。感谢您的回复!您在哪里设置搜索栏的代理?我在你发布的代码示例中没有看到这种情况。如果未设置代理,则不会触发
textDidChange
searchBar.delegate = self