“没有下标成员”错误(迁移到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 
+1

并给出所有可选项,它应该是一个'if let'。 – rmaddy

+0

这是正确的。谢谢! –