Swift init()上的MKLocalSearch不起作用

时间:2014-07-17 21:23:49

标签: swift mklocalsearch

我正在尝试在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 {

            }
        }

2 个答案:

答案 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)