ios swift ios8 xcode6-beta6 xcode6-beta5

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.