ios - error fatal: el elemento NSArray no pudo coincidir con el tipo de elemento Swift Array
ios8 xcode6-beta6 (3)
De repente, comencé a obtener el error de tiempo de ejecución como,
fatal error: NSArray element failed to match the Swift Array Element type
He declarado mi matriz como,
var myArray : [CUSTOM_CLASS] = [CUSTOM_CLASS]()
Ahora, en mi bloque de éxito de respuesta del servidor que tengo,
self.myArray = dicResponse["data"]! as Array
println(self.myArray) // FATAL ERROR HERE
Lo cual funcionó perfecto antes de actualizar a Xcode6 Beta6
FYI : dicResponse["data"]! // is verified as valid
(Perdón por señalar el lugar equivocado antes!)
SOLUCIONADO
No lo sé, pero hice algunos cambios y funciona,
var myArray = [AnyObject]()
self.myArray = dicResponse["data"]! as [AnyObject]
Si está trabajando con Cocoa API, siempre recibirá un NSArray
, que no está tipificado.
Por lo tanto, debe convertir esa matriz en una matriz Swift típica.
Debería poder compilar este código:
var myArray : [CUSTOM_CLASS] = [CUSTOM_CLASS]()
self.myArray = dicResponse["data"]! as [CUSTOM_CLASS]
De esta forma, cada elemento de la matriz se CUSTOM_CLASS
un objeto CUSTOM_CLASS
.
Si pudiera complementar la respuesta de Teejay con más información. Este error:
fatal error: NSArray element failed to match the Swift Array Element type
es causado por un error de tipo.
Por ejemplo, haber lanzado a su tipo de arreglo Swift:
myPersonList = aDictionary["persons"] as [Person]
Al acceder al valor en unaDiccionario basado en "persons"
clave, Swift espera recibir una matriz de tipo Persona . Esto se compilará y se ejecutará sin problemas.
Sin embargo, más adelante en su código cuando se accede al elemento array de myPersonList
, si el tipo no es el especificado, en mi ejemplo Persona , la ejecución se bloqueará con el error anterior.
En pocas palabras: es casi seguro que haya especificado el tipo incorrecto en el elenco. Examine su objeto de diccionario para ver lo que realmente contiene.
TL; DR: También causado por la mezcla de Xcode 7 y Xcode 7.1 binarios.
Esto ya ha sido respondido, pero acabo de recibir este error en las entrañas de Alamofire por un molde de matriz de [String] válido.
En mi caso, estaba usando carthage y no me había dado cuenta de que xcode-select aún apuntaba al Xcode 7, que no funcionaba bien. La actualización de xcode-select a Xcode 7.1B solucionó mi problema.