我有一个例子,是一个随机协议
protocol testP {
init(param1: String)
}
我有一个类,以Any
作为参数,举例说明:
class testC {
var aClass: Any
}
我该如何检查
aClass
是否符合协议 testP
,如果符合,使用协议的初始化器创建一个新对象,例如:let newObject = aClass(param1: "Hello World!")
请帮忙
我有一个例子,是一个随机协议
protocol testP {
init(param1: String)
}
我有一个类,以Any
作为参数,举例说明:
class testC {
var aClass: Any
}
aClass
是否符合协议 testP
,如果符合,使用协议的初始化器创建一个新对象,例如:let newObject = aClass(param1: "Hello World!")
请帮忙
您可以像其他类型检查一样使用 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
。
testP
协议的类型的实例分配给aClass
,还是将符合testP
协议的类型的元类型分配给它? - Hamishvar aClass: testP
来进行所有这些检查吗? - vadian