如何在 Swift 的地图应用程序中设置 UISearchBar?
How to set UISearchBar in maps application in Swift?
我是 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**
部分收到错误消息:
"Cannot convert value of type '(MKLocalSearchResponse!, NSError!) ->
()' to expected argument type '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
使用这个:
(response: MKLocalSearchResponse?, error: NSError?) in
有用的链接:
MKLocalSearchCompletionHandler
希望对您有所帮助
我是 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**
部分收到错误消息:
"Cannot convert value of type '(MKLocalSearchResponse!, NSError!) -> ()' to expected argument type '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
使用这个:
(response: MKLocalSearchResponse?, error: NSError?) in
有用的链接: MKLocalSearchCompletionHandler
希望对您有所帮助