gpt4 book ai didi

Swift 字符串 vs. 字符串!与字符串?

转载 作者:搜寻专家 更新时间:2023-10-31 08:11:27 27 4
gpt4 key购买 nike

我已阅读 this问题和其他一些问题。但它们与我的问题

有些无关

对于 UILabel 如果你不指定 ?! 你会得到这样的错误:

@IBOutlet property has non-optional type 'UILabel'

然后 Xcode 给你 2 个选择来修复它,你可以这样做:

fix-it Add ? to form the optional type UIlabel?
fix-it Add ! to form the implicitly unwrapped optional type UIlabel?

然而,对于字符串,您可以只键入 string 而无需 ?! 并且您不会收到错误消息 这是为什么?

如果未设置 name 会怎样?然后我们会有一个 nil 没有使用 ?!Swift 所有关于满足“类型安全” '?

示例:

struct PancakeHouse {
let name: String // this doesn't have '?' nor '!'
let photo: UIImage?
let location: CLLocationCoordinate2D?
let details: String
}

我的主要困惑是我们什么时候不想使用可选?

最佳答案

所有这些都包含在文档中:The Swift Programming Language - The Basics .

简而言之:

String代表 String保证存在。这个值不可能为零,因此直接使用是安全的。

String?代表 Optional<String> , 可以是 nil .您不能直接使用它,您必须先将其解包(使用 guardif let 或强制解包运算符 ! )以生成 String .只要你不强行用 ! 解包它,这也是安全的。

String!也代表一个 Optional<String> , 可以是 nil .然而,这个可选值可以用在需要非可选值的地方,这会导致隐式的强制展开。这就像有一个 String?并始终使用 ! 隐式地强制展开它.这些很危险,因为会出现 nil将使您的程序崩溃(除非您手动检查 nil)。

关于Swift 字符串 vs. 字符串!与字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37493241/

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