致命错误:NSArray元素无法匹配Swift数组元素types
突然我开始得到运行时错误,
fatal error: NSArray element failed to match the Swift Array Element type
我宣布我的arrays为,
var myArray : [CUSTOM_CLASS] = [CUSTOM_CLASS]()
现在,在我的服务器响应成功块中,
self.myArray = dicResponse["data"]! as Array println(self.myArray) // FATAL ERROR HERE
升级到Xcode6 Beta6之前,这是完美的
FYI : dicResponse["data"]! // is verified as valid
(抱歉指向错误的地方!)
解决了 :
不知道,但我做了一些改变,它的工作原理,
var myArray = [AnyObject]() self.myArray = dicResponse["data"]! as [AnyObject]
如果我能补充Teejay的答案与一些进一步的信息。 这个错误:
fatal error: NSArray element failed to match the Swift Array Element type
是由types不匹配造成的。
例如有投到您的Swift数组types:
myPersonList = aDictionary["persons"] as [Person]
在基于关键"persons"
访问aDictionary中的值,Swift希望得到一个Persontypes的数组 。 这将编译和执行没有问题。
然而,当你访问myPersonList
数组元素的时候,如果这个types不是指定的,那么在你的代码中,在我的例子Person中 ,那么执行就会崩溃,出现上面的错误。
底线:你几乎可以肯定的在演员中指定了错误的types。 检查你的字典对象,看看它真的包含了什么。
如果你正在使用Cocoa APIs,你总是会收到一个没有代表性的NSArray
。
所以,你需要把这个数组转换成一个典型的Swift数组。
你应该能够编译这个代码:
var myArray : [CUSTOM_CLASS] = [CUSTOM_CLASS]() self.myArray = dicResponse["data"]! as [CUSTOM_CLASS]
这样,每个数组元素被转换为一个CUSTOM_CLASS
对象。
TL; DR:也是由混合Xcode 7和Xcode 7.1二进制文件引起的。
这已经被回答了,但是我刚刚在Alamofire的肠胃里得到了一个有效[String]的数组。
在我的情况下,我使用迦太基,并没有意识到xcodeselect仍然指向快速Xcode 7。更新xcodeselect到Xcode 7.1B解决了我的问题。