¿Cuál es la diferencia entre Y !

Soy bastante nuevo en Swift y quiero saber la diferencia entre [String!] Y [String]! . ¿Ambos son no opcionales? pero [String]! indica nil cuando no está inicializado y [String!] no?

[String!] Es una matriz de String imprevistas sin envolver

[String]! es una matriz implícitamente desenvuelta de String s

Eso significa que el primero puede contener valores nil pero no puede ser nil . El segundo podría ser nil pero sus contenidos son siempre nil .

[¡Cuerda!]

Este es un set de Implicitly Unwrapped Strings .

Significa que en cada elemento de esta matriz puede encontrar una String o ninguna.

 let list0: [String!] = ["Hello", nil, "world", nil] 

[Cuerda]!

Esta es una Implicitly Unwrapped Array que contiene una String .

Significa que en una variable declarada como esta puede encontrar nil o una matriz donde cada elemento es una String válida.

 let list1: [String]! = nil let list2: [String]! = ["Hello", "world"] 

[String!] : Esta es una matriz no opcional de Strings opcionales.
[String]! – Esta es una serie opcional de Strings no opcionales.