Итак, компилятор сообщает вам, что у вас есть массив MKAnnotation
, но вы пытаетесь вставить в него ServiceLocation
, который не связан с типом. Поскольку Swift строго типизирован, это просто недопустимо (квадратный колышек - ситуация с круглым отверстием).
Что вам нужно сделать, так это сопоставить ваш ServiceLocation
с MKAnnotation
, например, так:
var matchingItems = [MKAnnotation]()
var handleMapSearchDelegate:HandleMapSearch? = nil
var allServiceLocations : [ServiceLocation] = []
func updateSearchResults(for searchController: UISearchController) {
guard let mapView = mapView,
let searchBarText = searchController.searchBar.text else { return }
matchingItems = allServiceLocations.filter({ $0.locationName == searchBarText })
.map({
let annotation = MKPointAnnotation()
annotation.coordinate = CLLocationCoordinate2D(latitude: CLLocationDegrees(exactly: $0.latitude)!, longitude: CLLocationDegrees(exactly: $0.longitude)!)
annotation.title = $0.locationName
annotation.subtitle = $0.locationType
return annotation
})
}