Swift 4中强制解包变量和普通变量之间的区别?

时间:2018-03-29 06:05:32

标签: swift swift4

Swift 4中的optionals和normal变量有什么区别?

    var myName: String?
    var myName: String!
    var nyName: String

1 个答案:

答案 0 :(得分:0)

在可能缺席值的情况下使用选项。可选项表示两种可能性:要么存在值,您可以打开可选项以访问该值,或者根本没有值。

下面的示例使用初始化程序尝试将String转换为Int:

let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
// convertedNumber is inferred to be of type "Int?", or "optional Int"

如果您定义了一个可选变量而未提供默认值,则该变量将自动设置为nil:

var surveyAnswer: String?
// surveyAnswer is automatically set to nil

您可以使用if语句通过将可选项与nil进行比较来确定可选项是否包含值。您可以使用“等于”运算符(==)或“不等于”运算符(!=)执行此比较。

如果一个可选项有一个值,它被认为是“不等于”nil:

if convertedNumber != nil {
    print("convertedNumber contains some integer value.")
}
// Prints "convertedNumber contains some integer value."

一旦确定可选项确实包含值,就可以通过在可选项名称的末尾添加感叹号(!)来访问其基础值。感叹号有效地说:“我知道这个选项肯定有价值;请使用它。“这被称为强制解包可选的值:

if convertedNumber != nil {
    print("convertedNumber has an integer value of \(convertedNumber!).")
}
// Prints "convertedNumber has an integer value of 123."

紧接着是苹果文件https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html