gpt4 book ai didi

ios - Swift 中的 CLPlacemark 崩溃

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

我正在使用 CLGeocoder 进行反向地理定位并获取 CLPlacemark 数组。当我在美国境外使用 GPS(即 -27,127)然后访问 placemark.postalCode 时,应用程序崩溃并显示:

“ fatal error :在展开可选值时意外发现 nil”。

似乎 placemark.postalCodenil,其中没有可用的邮政编码。但是 postalCode 在 Swift 中的返回类型是 String!:

var 邮政编码:字符串! { get }//邮政编码,例如。 95014

所以我什至无法测试 nil,因为崩溃是由 postalCode 的 getter 引起的。

有什么办法可以防止这种崩溃吗?谢谢!

最佳答案

作为可选的,即使隐式展开,您也可以检查它是否为 nil:

if placemark.postalCode != nil {

}

应用程序不会因此而崩溃 :)

为了证明这一点,只需在 playground 中尝试这段代码,其中检查 2 个隐式展开的属性(一个计算属性和一个存储属性)是否为 nil:

struct Test {
var nilComputed: String! { return nil }
var nilStored: String! = nil
}

var test = Test()

if test.nilComputed != nil {
print("It's not nil")
} else {
print("It's nil")
}

if test.nilStored != nil {
print("It's not nil")
} else {
print("It's nil")
}

关于ios - Swift 中的 CLPlacemark 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27671435/

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