通过KeyPath <object,value =“”>获取价值

时间:2018-03-26 01:16:59

标签: swift generics key-value-observing keypaths

我尝试按照KeyPath<Object, Value>这样获取价值

func myFunc<Object: NSObject, Value>(in object: Object, for keyPath: KeyPath<Object, Value>) {
    let value = object[keyPath: keyPath]
    debugPrint(value, type(of: value)) // correct printing value
    print("nil? = ", value == nil) // always fail ??
    print("notNil? = ", value != nil) // always notNil ??
}

我需要将valuenil进行比较 但是我在控制台中得到了非常奇怪的结果,我的检查总是有notNil结果

的例子
var test1: String! = "test"
myObservation.myFunc(in: self, for: \.test1)
  

控制台输出:

     

测试Swift.ImplicitlyUnwrappedOptional

     

零? = false

     

notNil? = true

的例子
var test2: String? = nil
myObservation.myFunc(in: self, for: \.test2)
  

控制台输出:

     

nil Swift.Optional

     

零? = false // ???

     

notNil? = true

如何将value与nil进行比较?

0 个答案:

没有答案