Ios 选项:什么&x27;[字符串?]和[字符串]之间的区别是什么?

Ios 选项:什么&x27;[字符串?]和[字符串]之间的区别是什么?,ios,swift,Ios,Swift,本质上,[String?]和[String]? 如果我定义像var mystringaray:[String?]这样的数组,我不需要使用来展开它,但当我将数组定义为var myStringArray:[String]?时,我必须使用强制展开它 这里缺少什么?[String?]是一个可选字符串数组。数组本身不是可选的,但包含Optionals [String]?是可选的字符串数组。数组本身是可选的,包含非可选字符串。[String?]是可选字符串的数组。数组本身不是可选的,但包含Optionals

本质上,
[String?]
[String]?

如果我定义像
var mystringaray:[String?]
这样的数组,我不需要使用
来展开它,但当我将数组定义为
var myStringArray:[String]?
时,我必须使用
强制展开它

这里缺少什么?

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


[String]?
是可选的字符串数组。数组本身是可选的,包含非可选字符串。

[String?]
是可选字符串的数组。数组本身不是可选的,但包含Optionals


[String]?
是可选的字符串数组。数组本身是可选的,包含非可选的。

表示[String]?您正在创建一个可选的字符串数组,该数组是可选的


对于[String?]您正在创建一个字符串可选数组,每个索引值都是[String]的可选字符串?您正在创建一个可选的字符串数组,该数组是可选的


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

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

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

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

for string in arrayOfOptionalStrings {
    if let string = string {
        print(string)
    }
}


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

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

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

for string in arrayOfOptionalStrings {
    if let string = string {
        print(string)
    }
}


谢谢,现在说得通了!帮帮我!谢谢,现在说得通了!帮帮我!