判断Struct是否符合协议,但如果嵌套 struct 是可选的,则始终返回false
,
示例:
protocol XYZ {
}
extension XYZ {
func test() {
print("asdsfd")
}
}
struct Test1: XYZ {
var test2: Test2
var test3: Test3?
init(){
self.test2 = Test2()
self.test3 = Test3()
}
}
struct Test2: XYZ {
}
struct Test3: XYZ {
}
现在:如果我想判断 struct 是否使用了协议
let x = Test1()
以下条件为真,因为Test2
符合XYZ
协议
print(type(of: x.test2) is XYZ.Type)
下面的条件将为FALSE,因为符合XYZ
协议的Optional<Test2>
应该是true
,但由于可选,它返回false
print(type(of: x.test3) is XYZ.Type)
我应该如何处理可选的在这种情况下,我试图解开可选的,但它没有发生.如有任何帮助,我们不胜感激.
我试着解开可选选项,但没有实现.我正在试图找到一种方法来比较可选类型与协议的一致性.