首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MKLocalSearch返回0值

MKLocalSearch返回0值
EN

Stack Overflow用户
提问于 2015-01-05 12:18:06
回答 1查看 535关注 0票数 0

我正在开发一个iOS应用程序,它需要搜索位置并将注释放到地图中。我用Swift语言编写了以下搜索代码。但是,它总是返回0值作为响应。

代码语言:javascript
复制
var searchRequest : MKLocalSearchRequest = MKLocalSearchRequest()
        searchRequest.naturalLanguageQuery = address
        searchRequest.region = self.mapView.region

        var search : MKLocalSearch = MKLocalSearch(request: searchRequest)

        var response: MKLocalSearchResponse
        var err : NSError = NSError()
        search.startWithCompletionHandler { (
            response, err) -> Void in
            var placeMarks: NSMutableArray = NSMutableArray()

            for mp in placeMarks{
                placeMarks.addObject(mp)
            }
            self.mapView.removeAnnotations(self.mapView.annotations)
            self.mapView.showAnnotations(placeMarks, animated: true)
        }

我试过用不同的地址,城市名称,州名。但帮不上忙。所以请帮帮我。如有任何帮助,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-05 14:00:15

看看这些代码正在做什么:

代码语言:javascript
复制
var placeMarks: NSMutableArray = NSMutableArray()

for mp in placeMarks{
    placeMarks.addObject(mp)
}

首先,它创建并初始化一个名为placeMarks的空数组。

然后,它循环遍历placeMarks (这是空的),并将自己的对象添加到自己(但该代码从不执行,因为数组开始是空的)。

然后,将这个空的placeMarks数组传递给什么都不做的showAnnotations (因为该数组是空的)。

相反,代码应该循环遍历response.mapItems数组,并将该数组中每个MKMapItem对象中的placemark添加到placeMarks数组中。

此外,在尝试处理err之前,代码应该检查response是否为nil

最后,responseerr在调用startWithCompletionHandler之前的局部变量声明是不必要的。完成处理程序不需要这些变量,它将搜索内部创建的对象传递给块。

修改后的代码可能如下所示:

代码语言:javascript
复制
//var response: MKLocalSearchResponse
//var err : NSError = NSError()

search.startWithCompletionHandler { (
    response, err) -> Void in
    if (err == nil) {
        var placeMarks: NSMutableArray = NSMutableArray()

        for res in response.mapItems {
            if let mi = res as? MKMapItem {
                placeMarks.addObject(mi.placemark)
            }
        }

        self.mapView.removeAnnotations(self.mapView.annotations)
        self.mapView.showAnnotations(placeMarks, animated: true)
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27779392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档