ios - 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.
解决方案
错误消息告诉您,它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 实例。
推荐阅读
- redmine - 在保留外部数据库的同时移动 Redmine 服务器
- python-3.8 - 遍历 URL 中的目录到 Python 中的根目录
- python - pytorch中的神经网络定义如何使用pyton类
- javascript - 如何在useEffect中正确设置多个状态
- excel - VBA 工作日函数
- git - 运行 npm install - 如何配置不使用 SSH(端口被防火墙阻止)
- python - 为什么 Python 从 outputWriter 中给出 3 条不同的行而不是覆盖这些行?
- python - 发现样本数不一致的输入变量错误
- python - Python:未定义符号:导入 ssl 时的 TLSv1_method
- ios - 无法运行自动增量构建脚本