2

我正在尝试在 Swift 中使用 MKLocalSearch Api。但我无法让它工作。错误来自

var search:MKLocalSearch = MKLocalSearch.init(request)

我阅读了文档,它声明方法名称是 init(request:) 我不确定我做错了什么。请指教。:)

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 {

            }
        }
4

2 回答 2

0

这是 init 的错误语法。它们是由 Swift 暗示的,所以你会使用

var x = MKLocalSearch(request: request)

不是

var x = MKLocalSearch.init(request)
于 2015-03-12T22:37:51.903 回答
0

更改此行:

var search:MKLocalSearch = MKLocalSearch.init(request)

至:

var search:MKLocalSearch = MKLocalSearch.init(request: request)

这个例子中涉及的命名有点让人困惑——第一部分request:是一个标签,告诉 Swift 要调用哪个 init 函数——在这种情况下,它映射回 Objective-CinitWithRequest:方法。

第二部分request是您MKLocalSearchRequest传递给 init 函数的变量。所以 Objective-C 的等价物是这样的:

MKLocalSearch *search = [[MKLocalSearch alloc] initWithRequest:request];

Apple 的The Swift Programming Language书中有一整章标题为“初始化” ,可在 iBooks 商店和此处的 PDF 中获得,尽管 PDF 中的格式更差(接近可怕)。

于 2014-07-17T21:26:46.693 回答