【问题标题】:NSKeyValueChangeKey ambiguous reference to member subscriptNSKeyValueChangeKey 对成员下标的模糊引用
【发布时间】:2016-11-04 12:49:47
【问题描述】:

当我从 swift 2 转换为 swift 3 时 我面临的错误是“对成员下标的模糊引用”

下面是我的代码:

class KeyValueChange {

    fileprivate let change: [String : AnyObject]

    init(change: [String : AnyObject]) {
        self.change = change
    }

    var kind: NSKeyValueChange? {
        guard let value = change[NSKeyValueChangeKey.kindKey] as? NSNumber else {
            return nil
        }

        return NSKeyValueChange(rawValue: value.uintValue)
    }

    var indexSet: IndexSet? {
        return change[NSKeyValueChangeKey.indexesKey] as? IndexSet
    }

    var new: AnyObject? {
        return change[NSKeyValueChangeKey.newKey]
    }

}

请详细说明,因为很多地方都会出现相同的错误

提前致谢

【问题讨论】:

    标签: swift3 xcode8


    【解决方案1】:

    在 Swift3 中,KVO 方法 observeValue(forKeyPath:of:change:context:)[NSKeyValueChangeKey : Any]? 传递给 change 参数。如果你想使用你的KeyValueChange 类,你最好适应变化:

    class KeyValueChange {
    
        private let change: [NSKeyValueChangeKey : Any]
    
        init(change: [NSKeyValueChangeKey : Any]) {
            self.change = change
        }
    
        var kind: NSKeyValueChange? {
    
            guard let value = change[NSKeyValueChangeKey.kindKey] as? NSNumber else {
                return nil
            }
    
            return NSKeyValueChange(rawValue: value.uintValue)
        }
    
        var indexSet: IndexSet? {
            return change[NSKeyValueChangeKey.indexesKey] as? IndexSet
        }
    
        var new: Any? {
            return change[NSKeyValueChangeKey.newKey]
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-01
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多