“无下标成员”错误(迁移到 Swift 3)
Posted
技术标签:
【中文标题】“无下标成员”错误(迁移到 Swift 3)【英文标题】:"No subscript members" error (Migrating to Swift 3) 【发布时间】:2016-10-04 20:24:13 【问题描述】:我目前正在将我的代码迁移到 Swift 3,并且遇到了一个我无法弄清楚的错误。 observeValue(forKeyPath 函数已在 Swift 3 中更新,并且我的代码不再适用于此。错误状态“类型 '[NSKeyValueChangeKey: Any]?' has no subscript members”,它指向下标常量“change”。在 Swift 3 中的某些原因,它不会让我下标 change 参数。我该如何解决这个错误?
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
【问题讨论】:
【参考方案1】:change
参数是一个可选参数,因此您必须先将其解包,然后才能对其下标。您还应该使用枚举值作为下标而不是原始字符串:
let change = change?[.newKey] as? Float
【讨论】:
考虑到所有选项,它应该是if let
。以上是关于“无下标成员”错误(迁移到 Swift 3)的主要内容,如果未能解决你的问题,请参考以下文章
Swift 2.3 到 Swift 3.1 迁移 - Alamofire 请求错误
从Swift 3.2迁移到Swift 4我使用autosavesInPlace收到错误