【发布时间】:2016-03-24 11:38:28
【问题描述】:
我有一个类包含其他类的类类型。而且这些类类型是在运行时注册的,所以实际上我不会在编译时知道类类型。但稍后我将使用这些注册的类类型来创建它们的实例。这是我的类定义
class registeredClassTypes
{
var URLContext: AnyClass
var ParserContext: AnyClass
var ValidationContext: AnyClass
func setTypes(URLContext: AnyClass, ParserContext: AnyClass, ValidationContext: AnyClass ) {
self.URLContext=URLContext
self.ParserContext = ParserContext
self.ValidationContext = ValidationContext
}
}
现在,我已经收集了包含这些类型的此类对象。
let classTypesObj = registeredClassTypes()
classTypesObj.setTypes(SomeClass.self, ParserContext: AnotherClass.self, ValidationContext: OneMoreClass.self)
有时我会需要这些类型的实例。虽然可以像下面这样但是使用类型转换来分类:
let requestType:SomeClass.Type = classTypesObj.URLContext as! SomeClass.Type
let obj = requestType.init() //successfully creates the object of 'SomeClass'
我参考了一些博客,并了解到元类型的对象在没有类型转换的情况下无法创建。
但我的问题是我不会知道类“SomeClass”,所以我不能将它类型转换为“SomeClass”。 有没有办法实现这一点来动态解析类类型。我想要这样或任何其他方式:
let requestType = classTypesObj.URLContext
let obj = requestType.init()
【问题讨论】:
标签: ios swift dynamic instantiation