2016-10-04 52 views
1

我目前正在將我的代碼遷移到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 
} 

回答

5

change參數是可選的,所以你必須解開它你應該使用枚舉值作爲下標而不是原始字符串:

let change = change?[.newKey] as? Float 
+1

並給出所有可選項,它應該是一個'if let'。 – rmaddy

+0

這是正確的。謝謝! –

相關問題