我目前正在将我的代码迁移到Swift 3,并且遇到了一个我无法弄清楚的错误.observeValue(forKeyPath函数已在Swift 3中更新,我的代码不再适用于此.错误状态"类型'[NSKeyValueChangeKey:Any]?'没有下标成员",它指向下标常量"更改".在Swift 3中的一些原因,它不会让我下标更改参数.如何修复此错误?
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
//Line below is generating error: Type '[NSKeyValueChangeKey: Any]?' has no subscript members
let change = change["new"] as? Float
}
Run Code Online (Sandbox Code Playgroud)
该change参数是可选的,因此您必须先将其解包,然后才能下标.您还应该使用枚举值作为下标而不是原始字符串:
let change = change?[.newKey] as? Float
Run Code Online (Sandbox Code Playgroud)