MKLocalSearchCompleter не работает на физическом устройстве, но отлично работает на симуляторе - PullRequest
0 голосов
/ 17 апреля 2020

У меня возникла очень странная проблема с моим приложением. Когда я запускаю запрос MKLocalSearchCompleter на симуляторе, он работает нормально, вызываются методы делегатов, и все работает гладко.

Но при попытке на физическом устройстве методы делегатов больше не вызываются (ни didUpdateResults (_ :) и не сделалFailWithError (_:))

Я попытался протестировать ту же реализацию в новом проекте; такое же поведение.

Когда я геокодирую адрес с помощью CLGeocoder, он отлично работает как на физическом, так и на симуляторе.

Моя сеть очень хорошая, и все остальные сетевые задачи работают хорошо.

Моя реализация очень проста c:

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)
}

Я действительно долго искал и не смог найти ответ; Большое спасибо за помощь!

1 Ответ

1 голос
/ 17 апреля 2020

Я не знаю, сработало это или нет, но это просто подсказка для вас.

Просто определите let searchCompleter = MKLocalSearchCompleter() глобально в вашем UIViewController.

Напишите приведенное ниже утверждение viewDidLoad методы вместо методов делегатов.

 let searchCompleter = MKLocalSearchCompleter()

 searchCompleter.delegate = self

Я имел дело с тем же типом проблемы в прошлом, когда работал с UIImagePickerController. Это работает для меня.

Спасибо!

...