gpt4 book ai didi

ios - 为什么 String 会隐式变成 String!在 swift

转载 作者:行者123 更新时间:2023-11-28 09:59:31 25 4
gpt4 key购买 nike

我昨天从 Xcode 收到一个编译错误,说

Binary operator '&&' cannot be applied to two Bool operands [1]

if text != nil && presentingViewController != nil {
...
}

text 之前定义为

var text: String = "" {
didSet {
...
}
}

presentingViewController来自UIViewController,它是super类。

我的一个 friend 告诉我这是由 text 引起的,它是 String! ,通过更改解决了这个问题

var text: String

var text: String?

但是,为什么我明确定义的 String 变成了 String! 仍然让我感到困惑。谁能提供有关此隐式转换的任何详细信息?

[1] 这个编译错误没有意义,这个问题不是another question of the same compilation error 的重复.

最佳答案

你的问题与 swift 中所谓的“optionals”有关。

在 Objective-C 中,您可以引用 NSString,它可以指向 NSString 实例 - 或者指向 nil。在 swift 中这是不同的!

swift 中的“常规”字符串永远不会为零。只有“可选”字符串可以为零。这是它在 swift 代码中的样子:

var myRegularString  : String      // this can never be nil, can't compare to nil
var myOptionalString : String? // this can be nil (note the ?)

您有一个“常规”字符串。因此,当您尝试将其与 nil 进行比较时,编译器会报错。

此处解释可选值:Swift Programming Language/Basics/Optionals

关于ios - 为什么 String 会隐式变成 String!在 swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30996939/

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