如何修复此错误:
"downcast from CLplacemark? to Clplacemark only unwraps optional"因此,我使用以下代码:
if let p = CLPlacemark(placemark: placemarks.first as? CLPlacemark){}并更改placemarks数组,但不起作用
我的代码是:
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)
}
}在此代码中:
if let p = CLPlacemark(placemark: placemarks[0] as? CLPlacemark)我有错误,关于
"downcast from CLplacemark? to Clplacemark only unwraps optional"如何修复此错误?!
发布于 2016-01-17 09:30:06
如果你实际上不需要复制第一个placemark,你只需要做:
if let p = placemarks.first
{
print(p)
self.adsresslabel.text = "\(p.administrativeArea)\(p.postalCode)\(p.country)"
}另一方面,如果您确实需要它的副本:
if let p0 = placemarks.first
{
let p = CLPlacemark(placemark:p0)
print(p)
self.adsresslabel.text = "\(p.administrativeArea)\(p.postalCode)\(p.country)"
}发布于 2016-01-18 16:30:26
reverseGeocodeLocation:completionHandler的完成处理程序声明为
typealias CLGeocodeCompletionHandler = ([CLPlacemark]?, NSError?) -> Voidplacemarks是一个可选的CLPlacemark项数组,因此不需要向下转换。您只需检查数组是否不是nil,并且不是空的,如Alain T的答案所述。
https://stackoverflow.com/questions/34827079
复制相似问题