首页 > 解决方案 > xcode10.1 更新后致命错误 NSArray 元素无法匹配 Swift Array 元素类型

问题描述

因为我更新了 xcode 10.1,所以发生了这个错误。

代码是:

class mainPageJobObj   {
    var _id : String = ""
    var avatar :String = ""
    var name : String = ""
    var serviceState = ""
}
items : [mainPageJobObj]!
items // i read it from server and its not empty
let oneItem = items[index] // Fatal error: NSArray element failed to match the Swift Array Element type -- This is what compiler is showing.

调试后 调试更具体

标签: iosswift

解决方案


错误消息告诉您,它items是从 an 桥接的NSArray(它不强制输入其元素),但是当 Swift 尝试检索一个元素时,它没有找到 的实例mainPageJobObj,这就是您所说的它们数组包含的内容。

从调试屏幕截图中,您可以看到该items数组实际上包含NSMutableDictionary.

一个快速的解决方法是使用适当的声明items

var items:[String:Any] = slider.mainPageObj.items!
let oneItem = items[index]
let name = oneItem["name"]

更好的解决方法是从一开始就使用 Swift 类型;如果来自服务器的数据以 JSON 格式返回,则用于Codable创建 Swift Struct 或 Class 实例。


推荐阅读