Método rápido de mutación enviado a object inmutable.

Simplemente no puedo enfocar este error, estoy tratando de agregar una cadena a una matriz como siempre lo hago en el objective c, pero rápido me da un error extraño.

var fileArray:NSMutableArray = [] alert.addAction(UIAlertAction(title: "Done", style: UIAlertActionStyle.Default, handler:{ (UIAlertAction)in self.fileArray.addObject(self.urlTextField.text) self.processURL() })) 

ERROR:
Terminar la aplicación debido a la exception no detectada 'NSInternalInconsistencyException', razón: '- [__ NSCFArray insertObject: atIndex:]: método de mutación enviado a object inmutable'

¿Cómo fileArray es inmutable? ¡Lo declaro como MutableArray!

EDIT ::: Resulta que el problema es la forma en que pueblo la matriz

 fileArray = myDict?.valueForKey("fileList") as! NSMutableArray 

esto solucionó el problema

 fileArray = myDict?.valueForKey("fileList")!.mutableCopy() as! NSMutableArray 

¡Una matriz no se convierte en mutable solo porque la declaras como tal o porque la lanzas como mutable con as! NSMutableArray as! NSMutableArray . Una matriz solo es mutable si se crea como una matriz mutable con [[NSMutableArray alloc] ....] o haciendo una mutableCopy de una matriz.

(lo mismo ocurre con los dictionarys, cadenas, NSSet y NSData)

Como su matriz contiene solo un tipo, recomiendo utilizar los types Swift, es mucho más fácil, var es mutable, let 's immutable

 var fileArray : Array<String> = [] alert.addAction(UIAlertAction(title: "Done", style: UIAlertActionStyle.Default, handler:{ (UIAlertAction)in self.fileArray.append(self.urlTextField.text) self.processURL() }))