MKLocalSearchCompleter 不能在物理设备上工作,但在模拟器上工作正常

MKLocalSearchCompleter not working on physical device but works fine on simulator

我的应用程序遇到了一个非常奇怪的问题。当我 运行 在模拟器上发出 MKLocalSearchCompleter 请求时,它工作正常,委托方法被调用并且一切顺利 运行。

但是,在物理设备上尝试时,不再调用委托方法(didUpdateResults(_ :) 和 didFailWithError(_ :))

我尝试在一个全新的项目上测试相同的实现;相同的行为。

当我使用 CLGeocoder 对地址进行地理编码时,它在物理和模拟器上都能正常工作。

我的网络非常好,所有其他网络任务都运行良好。

我的实现非常基础:

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

        let searchCompleter = MKLocalSearchCompleter()

        searchCompleter.delegate = self

        searchCompleter.queryFragment = searchBar.text!

}
func completerDidUpdateResults(_ completer: MKLocalSearchCompleter) {
        print(completer.results)

        searchQueryResults = [MKLocalSearchCompletion]()

        completer.results.forEach { (result) in
            self.searchQueryResults!.append(result)
        }

        researchTable.alpha = 1.0
        researchTable.reloadData()
}
func completer(_ completer: MKLocalSearchCompleter, didFailWithError error: Error) {
        print(error)
}

真的,我已经找了一段时间了,没能找到答案;非常感谢您帮助我!

我不知道它是否有效,但它只是为您提示。

只需在您的 UIViewController 中全局定义 let searchCompleter = MKLocalSearchCompleter()

编写下面的语句 viewDidLoad 方法而不是委托方法。

 let searchCompleter = MKLocalSearchCompleter()

 searchCompleter.delegate = self

我过去在处理 UIImagePickerController 时遇到过相同类型的问题。它对我有用。

谢谢!