首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“从CLplacemark?向下转换到Clplacemark仅展开可选的”(Swift2)

“从CLplacemark?向下转换到Clplacemark仅展开可选的”(Swift2)
EN

Stack Overflow用户
提问于 2016-01-16 20:42:24
回答 2查看 284关注 0票数 0

如何修复此错误:

代码语言:javascript
复制
"downcast from CLplacemark? to Clplacemark only unwraps optional"

因此,我使用以下代码:

代码语言:javascript
复制
if let p = CLPlacemark(placemark: placemarks.first as? CLPlacemark){}

并更改placemarks数组,但不起作用

我的代码是:

代码语言:javascript
复制
CLGeocoder().reverseGeocodeLocation(userLocation) { (placemarks, error) -> Void in

    if error == nil {

       if let p = CLPlacemark(placemark: placemarks[0] as? CLPlacemark){

            print(p)
            self.adsresslabel.text = "\(p.administrativeArea)\(p.postalCode)\(p.country)"
        }


    }else {
        print (error)
    }


    }

在此代码中:

代码语言:javascript
复制
if let p = CLPlacemark(placemark: placemarks[0] as? CLPlacemark)

我有错误,关于

代码语言:javascript
复制
 "downcast from CLplacemark? to Clplacemark only unwraps optional"

如何修复此错误?!

EN

回答 2

Stack Overflow用户

发布于 2016-01-17 09:30:06

如果你实际上不需要复制第一个placemark,你只需要做:

代码语言:javascript
复制
if let p = placemarks.first
{
        print(p)
        self.adsresslabel.text = "\(p.administrativeArea)\(p.postalCode)\(p.country)"
}

另一方面,如果您确实需要它的副本:

代码语言:javascript
复制
if let p0 = placemarks.first
{ 
        let p = CLPlacemark(placemark:p0)
        print(p)
        self.adsresslabel.text = "\(p.administrativeArea)\(p.postalCode)\(p.country)"
}
票数 0
EN

Stack Overflow用户

发布于 2016-01-18 16:30:26

reverseGeocodeLocation:completionHandler的完成处理程序声明为

代码语言:javascript
复制
typealias CLGeocodeCompletionHandler = ([CLPlacemark]?, NSError?) -> Void

placemarks是一个可选的CLPlacemark项数组,因此不需要向下转换。您只需检查数组是否不是nil,并且不是空的,如Alain T的答案所述。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34827079

复制
相关文章

相似问题

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