Je suis nouveau en utilisant swift et je veux faire une application qui utilise des cartes et je "essaie d'inclure une barre de recherche (UISearchBar
) mais lorsque j'essaie de créer une fonction qui effectue la recherche, une erreur se produit sur une ligne. Voici le code:
func performSearch(){
matchingItems.removeAll()
let request = MKLocalSearchRequest()
request.naturalLanguageQuery = searchText.text
request.region = mapView.region
let search = MKLocalSearch(request: request)
search.startWithCompletionHandler{
(response: MKLocalSearchResponse!, error: NSError!) in
for item in response.mapItems{
print("Item name = (item.name)")
print("Latitude = (item.placemark.location!.coordinate.latitude)")
print("Longitude = (item.placemark.location!.coordinate.longitude)")
}
}
}
Je reçois l'erreur dans le **startWithCompletionHandler**
partie qui dit:
"Impossible de convertir la valeur de type" (MKLocalSearchResponse !, NSError!) -> () "au type d’argument attendu" MKLocalSearchCompletionHandler "".
Pouvez-vous me dire comment résoudre ce problème?
Réponses:
1 pour la réponse № 1Si vous regardez la définition de MKLocalSearchCompletionHandler, vous pouvez voir que sa déclaration n’est pas exactement la même chose:
typealias MKLocalSearchCompletionHandler = (MKLocalSearchResponse?, NSError?) -> Void
Il suffit de remplacer votre code par:
func performSearch(){
let request = MKLocalSearchRequest()
request.naturalLanguageQuery = searchText.text
request.region = mapView.region
let search = MKLocalSearch(request: request)
search.startWithCompletionHandler{
(response: MKLocalSearchResponse?, error: NSError?) in
if let items = response?.mapItems
{
for item in items{
print("Item name = (item.name)")
print("Latitude = (item.placemark.location!.coordinate.latitude)")
print("Longitude = (item.placemark.location!.coordinate.longitude)")
}
}
}
}
1 pour la réponse № 2
Les points d'exclamation sur votre code doivent être changés au lieu de cela:
(response: MKLocalSearchResponse!, error: NSError!) in
utilisez ceci:
(response: MKLocalSearchResponse?, error: NSError?) in
Liens utiles: MKLocalSearchCompletionHandler
J'espère que cela aide