Swift: ¿Cómo agregar arrays de dictionary a una matriz?

¿Puedo agregar arrays de dictionary (es este el término correcto para una key de dictionary que contiene múltiples valores?) A una matriz?

var dictionary = [String: [String]]() var array = [String]() var data1:String = "55a" var data2:String = "95a" var data3:String = "66" var data4:String = "25" var data5:String = "88b" var data6:String = "#" dictionary["3"] = [data1, data2, data3, data4, data5, data6] var data7:String = "#" var data8:String = "#" var data9:String = "#" var data10:String = "#" var data11:String = "#" var data12:String = "#" dictionary["2"] = [data7, data8, data9, data10, data11, data12] var data13:String = "100" var data14:String = "101" var data15:String = "102" var data16:String = "103" var data17:String = "104" var data18:String = "105" dictionary["1"] = [data13, data14, data15, data16, data17, data18] 

He intentado esto:

 array.extend([dictionary["1"], dictionary["2"], dictionary["3"]]) 

pero hubo un error "No se puede invocar 'extender' con una list de arguments de tipo '([[(String)?])" ..

¿Cómo agrego el dictionary ["1"], ["2"] y ["3"] en consecuencia en la matriz?

En caso de que no esté interesado en el pedido, puede intentar:

 array.extend(flatMap(dictionary.values, {$0})) 

Si el pedido es importante, primero puede comstackr sus Arrays opcionales :

 let optionalArrays = [dictionary["1"], dictionary["2"], dictionary["3"]] array.extend(flatMap(optionalArrays, {$0 ?? []})) 

es decir, su dictionary devuelve una matriz opcional, esto provoca el error que informó.

Espero que esto ayude

Su statement de tipo de matriz no es correcta. Por favor testing debajo de uno

 var array: [[String:[String]] = [] 

Si desea una matriz de matrices de Strings , debe cambiar el tipo de matriz para que sea [[String]] , como dicen las otras respuestas.

Pero, al get valores fuera de su dictionary, ¡no debería forzar el desenvolver! Puede funcionar para este ejemplo, pero en el futuro es probable que te metas en problemas con:

'fatal error: inesperadamente encontrado nil al desenvolver un valor opcional'

Debería verificar si existe un valor en el dictionary para esa key, utilizando un enlace opcional, por ejemplo:

 if let value = dictionary["1"] { array.append(value) } // ... 

O bien, podría get todos los valores de su dictionary en una matriz como tal:

 let array = Array(dictionary.values) 

Si realmente quisieras una matriz de String , podrías usar flatMap :

 let array = flatMap(dictionary.values) { $0 } 

Su variable de array debe ser una Array de Array con elementos de String . ¡Tampoco se olvide de desenvolver los valores de los dictionarys agregando ! .

Prueba esto:

 var dictionary = [String: [String]]() var array = [[String]]() var data1:String = "55a" var data2:String = "95a" var data3:String = "66" var data4:String = "25" var data5:String = "88b" var data6:String = "#" dictionary["3"] = [data1, data2, data3, data4, data5, data6] var data7:String = "#" var data8:String = "#" var data9:String = "#" var data10:String = "#" var data11:String = "#" var data12:String = "#" dictionary["2"] = [data7, data8, data9, data10, data11, data12] var data13:String = "100" var data14:String = "101" var data15:String = "102" var data16:String = "103" var data17:String = "104" var data18:String = "105" dictionary["1"] = [data13, data14, data15, data16, data17, data18] array.extend([dictionary["1"]!, dictionary["2"]!, dictionary["3"]!]) 

Los valores del dictionary se devuelven como optionals (indicando así si existe un valor para una key), así que use '!' para desenvolver los valores de cada set de dictionarys (es decir, [dictionary["1"]! )

Y, como se sugiere en otras respuestas, cambie su tipo de matriz tal como se define actualmente como matrices de cadenas en lugar de una matriz de dictionarys.