BaS*_*Sha 27 ios swift ios8 xcode6-beta5 xcode6-beta6
突然,我开始得到运行时错误,因为,
fatal error: NSArray element failed to match the Swift Array Element type
Run Code Online (Sandbox Code Playgroud)
我宣布我的阵列为,
var myArray : [CUSTOM_CLASS] = [CUSTOM_CLASS]()
Run Code Online (Sandbox Code Playgroud)
现在,在我的服务器响应成功块中,
self.myArray = dicResponse["data"]! as Array
println(self.myArray) // FATAL ERROR HERE
Run Code Online (Sandbox Code Playgroud)
在升级到Xcode6 Beta6之前,这是完美的
FYI : dicResponse["data"]! // is verified as valid
Run Code Online (Sandbox Code Playgroud)
(抱歉指向错误的地方!)
解决了 :
不知道,但我做了一些改变,它的工作原理,
var myArray = [AnyObject]()
self.myArray = dicResponse["data"]! as [AnyObject]
Run Code Online (Sandbox Code Playgroud)
Max*_*eod 20
如果我能用一些进一步的信息补充Teejay的答案.这个错误:
fatal error: NSArray element failed to match the Swift Array Element type
Run Code Online (Sandbox Code Playgroud)
是由类型不匹配引起的.
例如,对你的Swift数组类型进行强制转换:
myPersonList = aDictionary["persons"] as [Person]
Run Code Online (Sandbox Code Playgroud)
基于键访问aDictionary中的值"persons",Swift期望接收Person类型的数组.这将编译并将毫无问题地执行.
但是,稍后在访问myPersonList数组元素的代码中,如果类型不是指定的 - 在我的示例Person中 - 那么执行将因上面的错误而崩溃.
底线:你几乎肯定在演员表中指定了错误的类型.检查您的字典对象以查看它真正包含的内容.
如果您使用 Cocoa API,您总是会收到一个NSArray未典型化的 。
因此,您需要将该数组转换为典型的 Swift 数组。
您应该能够编译此代码:
var myArray : [CUSTOM_CLASS] = [CUSTOM_CLASS]()
self.myArray = dicResponse["data"]! as [CUSTOM_CLASS]
Run Code Online (Sandbox Code Playgroud)
这样,每个数组元素都被转换为一个CUSTOM_CLASS对象。
| 归档时间: |
|
| 查看次数: |
29776 次 |
| 最近记录: |