Mon programme utilise map et j'ai un UITextField où l'utilisateur entre une phrase de recherche, la carte affichera alors les annotations des résultats de la recherche sur la carte. Le programme fonctionne très bien dans le simulateur, mais lorsqu'il est testé sur mon téléphone, il lance une erreur «zéro pendant le déballage d'une valeur optionnelle» si j'entre deux travaux tels que «parc de chien». Mais le programme ne va pas jeter l'erreur sur mon téléphone si je viens d'entrer "chien" par exemple. J'ai le délégué mis en place dans le ViewDidLoad et tous mes points de vente sont correctement liés. J'ai cherché ici et essayé de résoudre le problème en vain, alors j'ai pensé que je demanderais et voir si vous les gars remarquez ce qui me manque.Swift UIText Champ de lancer une erreur nulle lorsque plusieurs mots sont entrés
est ici la fonction pour la recherche UITextLabel:
@IBAction func searchField(_ sender: UITextField) {
let allAnnotations = self.mapView.annotations
self.mapView.removeAnnotations(allAnnotations)
let request = MKLocalSearchRequest()
request.naturalLanguageQuery = textField.text!
request.region = mapView.region
let search = MKLocalSearch(request: request)
search.start(completionHandler: {(response, error) in
if error != nil{
print("Error occured in search: \(error!.localizedDescription)")
}else if response!.mapItems.count == 0{
self.textField.text = "No matches found"
}else{
print("Matches found")
for item in response!.mapItems{
let annotation = MKPointAnnotation()
annotation.coordinate = item.placemark.coordinate
annotation.title = item.name
annotation.subtitle = item.placemark.thoroughfare! + ", " + item.placemark.locality! + ", " + item.placemark.administrativeArea!
self.mapView.addAnnotation(annotation)
}
}
})
sender.resignFirstResponder()
}
Sur quelle ligne l'erreur se produit-elle? Vous devriez envisager de déballer vos options en utilisant 'guard let' ou' if let' au lieu de forcer le déballage avec '!'. Cela peut vous aider à comprendre où les choses vont mal aussi bien. –
Essayé cela et il a encore jeté l'erreur. Passé à travers le code dans le débogueur et il renvoie l'erreur après la ligne "self.mapView.addAnnotation". Ce qui est vraiment bizarre, c'est que si vous entrez un mot, c'est bien, mais deux et il y a une erreur. Sans oublier que cela fonctionne parfaitement en simulateur. – oblagon
sur quelle ligne vous obtenez erreur? –