我正在尝试在Swift中使用MKLocalSearch Api。但我无法让它发挥作用。错误来自
var search:MKLocalSearch = MKLocalSearch.init(request)
我阅读了文档,并说明方法名称是init(请求:)我不确定我做错了什么。请指教。 :)
var request = MKLocalSearchRequest()
request.naturalLanguageQuery = searchTextFiled.text
println(searchTextFiled.text)
request.region = self.mapView.region //need to define region later
var search:MKLocalSearch = MKLocalSearch.init(request)
search.startWithCompletionHandler {
(response:MKLocalSearchResponse!, error:NSError!) in
if !error {
var placemarks:NSMutableArray = NSMutableArray()
for item in response.mapItems {
placemarks.addObject(placemarks)
}
self.mapView.removeAnnotations(self.mapView.annotations)
self.mapView.showAnnotations(placemarks, animated: true)
} else {
}
}
答案 0 :(得分:0)
更改此行:
var search:MKLocalSearch = MKLocalSearch.init(request)
要:
var search:MKLocalSearch = MKLocalSearch.init(request: request)
这种情况下涉及的命名有点令人困惑 - 第一部分,request:
是一个告诉Swift调用init函数的标签 - 在这种情况下,它映射回Objective-C { {1}}方法。
第二部分initWithRequest:
是您传递给init函数的request
变量。所以Objective-C等价于:
MKLocalSearchRequest
在Apple的 The Swift Programming Language 一书中有一整章标题为“初始化”,可以在iBooks商店和PDF here上找到,虽然更糟糕(接近可怕)格式化在PDF中。
答案 1 :(得分:0)
这是init的错误语法。他们被Swift暗示,所以你要使用
var x = MKLocalSearch(request: request)
不是
var x = MKLocalSearch.init(request)