我尝试通过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 ??
}
我需要比较它value
,nil
但我在控制台中得到非常奇怪的结果,我的检查总是有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 进行比较?