gpt4 book ai didi

ios - 绑定(bind)必须有可选类型 Swift

转载 作者:可可西里 更新时间:2023-11-01 00:13:46 25 4
gpt4 key购买 nike

我遇到了这个错误,但我不知道如何修复它。我已经完成了这里的所有答案,但我尝试的任何方法都不起作用。这是我的代码:

        CLGeocoder().reverseGeocodeLocation(location, completionHandler: { (placemarks, error ) -> Void in

var title = ""

if (error == nil) {

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

var subThoroughfare:String = ""
var thoroughfare:String = ""

if p.subThoroughfare != nil{

subThoroughfare = p.subThoroughfare
}

if p.thoroughfare != nil{

thoroughfare = p.thoroughfare
}

title = "\(subThoroughfare) \(thoroughfare)"
}
}

if title == ""{

title = "Added \(NSDate())"

}

错误在线:

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

条件绑定(bind)的初始化器必须是 Optional 类型,而不是 'CLPlacemark'

最佳答案

您报错:

Initializer for conditional binding must have Optional type, not 'CLPlacemark'

这是因为您正在调用 CLPlacemark(placemark: CLPlacemark),但它没有返回可选值。所以它提示你正在使用 if let 语法,它只对可选的有效。

但您真的不想强制展开 placemarks,我建议您完全消除 !。此外,考虑到在 Swift 2 中,placemarks 现在是 [CLPlacemark]?,您可以完全消除转换,从而简化 if 声明:

if let placemark = placemarks?.first {
let subThoroughfare = placemark.subThoroughfare ?? ""
let thoroughfare = placemark.thoroughfare ?? ""

title = "\(subThoroughfare) \(thoroughfare)"
}

请注意,您也可以简化 thoroughfaresubThoroughfare 实现,如上所示。

关于ios - 绑定(bind)必须有可选类型 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32614235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com