我有一个随机协议作为例子
protocol testP {
init(param1: String)
}
我有一个课程,以Any
为参数作为例子:
class testC {
var aClass: Any
}
如何检查aClass
是否符合协议testP
,如果符合,请使用协议初始化程序创建新对象,例如:
let newObject = aClass(param1: "Hello World!")
请帮助
答案 0 :(得分:1)
您可以使用if-let
protocol TestP {
init(param1: String)
}
class TestC {
var aClass: Any
init(_ aClass: Any) {
self.aClass = aClass
}
}
class MyClassA: TestP {
required init(param1: String) {
//
}
}
class MyClassB {
}
let containerA = TestC(MyClassA.self)
let containerB = TestC(MyClassB.self)
if let testPType = containerA.aClass as? TestP.Type {
var a = testPType.init(param1: "abc")
print(a) //->MyClassA
}
if let testPType = containerB.aClass as? TestP.Type {
print("This print statement is not executed")
}
顺便说一句,如果您只将班级类型分配给aClass
,请考虑使用AnyClass
或Any.Type
。