可选项:[String?]和[String]之间的区别是什么?

时间:2015-11-25 18:58:15

标签: ios swift

基本上[String?][String]?之间有什么区别 如果我定义像var myStringArray:[String?]这样的数组,我不需要使用!来解包它,但是当我将数组定义为var myStringArray:[String]?时,我必须使用{{1}强制解包它}
我在这里失踪了什么?

3 个答案:

答案 0 :(得分:5)

[String?]是一个可选字符串数组。数组不能为零,但字符串可以 [String]?是一个可选的字符串数组。数组可以是零,但字符串可以是

对于[String?],您不必打开数组,但必须打开数组中的每个字符串。对于[String]?,您需要在使用之前解开数组,而不是数组中的字符串。

let arrayOfOptionalStrings: [String?] = [ "a", nil, "c" ]

for string in arrayOfOptionalStrings {
    if let string = string {
        print(string)
    }
}
var optionalArrayOfStrings: [String]? = [ "a", "b", "c" ]

if let array = optionalArrayOfStrings {
    for string in array {
        print(string)
    }
}

optionalArrayOfStrings = nil

答案 1 :(得分:3)

[String?] Optional Strings 数组。数组本身不是可选的,但包含Optionals。

[String]?字符串可选数组。数组本身是一个Optional,包含非Optionals。

答案 2 :(得分:2)

对于[String]?你正在创建一个可选的字符串数组,该数组是可选的。

for [String?]你正在创建一个字符串选项数组,每个索引值都是一个可选字符串