我真的无法理解这个错误,我正在尝试像在Objective-C中那样将字符串添加到数组中,但是Swift给了我一个奇怪的错误。
var fileArray:NSMutableArray = []
alert.addAction(UIAlertAction(title: "Done", style: UIAlertActionStyle.Default, handler:{ (UIAlertAction)in
self.fileArray.addObject(self.urlTextField.text)
self.processURL()
}))
错误:
因为发送到不可变对象的可变方法,终止应用程序,异常原因为:'-[__NSCFArray insertObject:atIndex:]'
fileArray
怎么会是不可变的?我将其声明为 MutableArray !!!!!!
编辑::: 所以问题在于我填充数组的方式
fileArray = myDict?.valueForKey("fileList") as! NSMutableArray
这解决了问题。
fileArray = myDict?.valueForKey("fileList")!.mutableCopy() as! NSMutableArray
fileArray
对象有关吗?你能添加异常断点并检查应用程序在哪一行崩溃吗? - Vlad Papkoself.fileArray
的类型?这样你就可以知道它是否确实是一个奇怪的 Swift bug,还是self.fileArray
可能不是这个 NSMutableArray。 - Eric Ayaas! NSMutableArray
只是让编译器保持沉默,但并没有使实际值可变。你需要在myDict?.valueForKey("fileList")
调用的结果上调用mutableCopy
。 - Vlad PapkofileArray = myDict?.valueForKey("fileList")!.mutableCopy() as! NSMutableArray
。 - Subbu