¿Cómo puedo emitir un NSMutableArray a una matriz Swift de un tipo específico?
Estoy migrando mi proyecto de iOS a Swift. Estoy haciendo esta clase por clase. Cuando llamo a los métodos Objective C desde Swift, muchos tipos de Objective C se convierten en sus contrapartes Swift.
En mi caso, un objetivo CNSMutableArray
se convierte en Swift'sArray<AnyObject>
. Ahora aquí viene mi problema. Dentro de mi clase Swift, obtengo una matriz de un objeto Objective C. Ahora que estoy en el mundo Swift, me gustaría convertir esta matriz a un tipo específico en lugar deAnyObject
, porque sé con certeza qué tipo de objetos existen en esta matriz.
¡El compilador no me deja hacer eso! Permítanme simplificar mi problema diciendo que quiero convertir a una matriz que contiene cadenas. Esto es lo que probé:
var strings = myObjcObject.getStrings() as [String]
Me sale el siguiente error del compilador:
'String' no es idéntico a 'AnyObject'
Tendría que estar de acuerdo con el compilador, ya que String no es idéntico a AnyObject. Pero no veo por qué eso es un problema. Puedo rechazar AnyObject to String si quiero, ¿verdad?
También probé:
var strings = myObjcObject.getStrings() as? [String]
Esto parece ser un paso en la dirección correcta, pero getStrings () devuelve unNSMutableArray
entonces me sale el siguiente error:
'NSArray' no es un subtipo de 'NSMutableArray'
¿Hay alguna forma de hacer lo que estoy tratando de hacer aquí?