gpt4 book ai didi

ios - '[CLPlacemark] ?' is not convertible to ' [CLPlacemark]' -> swift2

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:42:31 29 4
gpt4 key购买 nike

这是我在 StackOverflow 上找到的部分代码。
它在 Swift 1.2 中工作为什么此代码在 swift 2 中不再有效:

geoCoder.reverseGeocodeLocation(location, completionHandler: { (placemarks, error) -> Void in
let placeArray = placemarks as [CLPlacemark] // !!! ERROR HERE !!!

// Place details
var placeMark: CLPlacemark!
placeMark = placeArray[0]

// Address dictionary
print(placeMark.addressDictionary)

// Location name
if let locationName = placeMark.addressDictionary["Name"] as? NSString {
print(locationName)
}

// Street address
if let street = placeMark.addressDictionary["Thoroughfare"] as? NSString {
print(street)
}

// City
if let city = placeMark.addressDictionary["City"] as? NSString {
print(city)
}

// Zip code
if let zip = placeMark.addressDictionary["ZIP"] as? NSString {
print(zip)
}

// Country
if let country = placeMark.addressDictionary["Country"] as? NSString {
print(country)
}

})

错误是 GetLocationViewController.swift:67:41: '[CLPlacemark]?'不可转换为“[CLPlacemark]”

最佳答案

看起来您需要在将地标数组分配给 [CLPlacemarks] 类型之前对其进行解包(隐式或可选链接)

对于你的例子,你应该使用可选链

if let validPlacemark = placemarks?[0]{
let placemark = validPlacemark as? CLPlacemark;
}

然后将所有逻辑放在大括号内,这样如果它找到有效的地标数组,它就会执行你想要的命令。如果不是,它什么也不做,或者你可以随心所欲地处理它

关于ios - '[CLPlacemark] ?' is not convertible to ' [CLPlacemark]' -> swift2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30923810/

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