如何在Swift中设置地图应用程序中的UISearchBar?
问题描述:
我是新的使用swift,我想做一个应用程序使用地图,我试图包括一个搜索栏(UISearchBar
)但当我尝试使一个函数,使搜索我得到一个错误线。下面的代码:如何在Swift中设置地图应用程序中的UISearchBar?
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)")
}
}
}
我得到的**startWithCompletionHandler**
部分,说的错误:
“无法将类型的价值 - 预期 '> ()(MKLocalSearchResponse!NSError!)'参数类型'MKLocalSearchCompletionHandler'“。
你能告诉我如何解决这个问题吗?
答
如果你看看MKLocalSearchCompletionHandler的定义,你可以看到它的声明是不完全一样的:
typealias MKLocalSearchCompletionHandler = (MKLocalSearchResponse?, NSError?) -> Void
仅仅通过更换代码:
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)")
}
}
}
}
答
的惊叹号您代码需要更改 而不是此:
(response: MKLocalSearchResponse!, error: NSError!) in
us E本:
(response: MKLocalSearchResponse?, error: NSError?) in
相关链接: MKLocalSearchCompletionHandler
希望它可以帮助
错误消失了!非常感谢! :) – HyunJin
为什么如果它解决了您的问题,将其取消标记为正确? –