“没有下标成员”错误(迁移到Swift 3)
问题描述:
我目前正在将我的代码迁移到Swift 3,并且遇到了一个我找不到的错误。 obserValue(forKeyPath函数已经在Swift 3中更新了,而且我的代码不再工作在这个b/c上。错误状态为“Type”[NSKeyValueChangeKey:Any]?'没有下标成员“,并且它指向下标不断的“变化”。有些原因,在斯威夫特3,它不会让我的下标变化参数。如何解决这个问题?“没有下标成员”错误(迁移到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
}
答
的change
参数是可选的,所以你必须解开它你应该使用枚举值作为下标而不是原始字符串:
let change = change?[.newKey] as? Float
并给出所有可选项,它应该是一个'if let'。 – rmaddy
这是正确的。谢谢! –