0

我尝试通过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

零?=假

不是零?= 真

例如

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

控制台输出:

无 Swift.Optional

零?= 假 // ???

不是零?= 真

我如何将我value的与 nil 进行比较?

4

0 回答 0