2016-11-04 50 views
0

当我从迅速2转换为迅速3 ,其现在面临误差“暧昧参照构件标”NSKeyValueChangeKey暧昧参考构件标

下面是我的代码:

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] 
    } 

} 

请详细说明,因为在很多地方得到相同的错误

在此先感谢

回答

0

在Swift3中,对于change参数,KVO方法observeValue(forKeyPath:of:change:context:)通过[NSKeyValueChangeKey : Any]?。如果你想使用你的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] 
    } 

}