У меня возникает следующая проблема,
У меня есть функция swift, которая принимает T.Type в качестве параметра
public static func register<T:Decodable>(_ type:T.Type, clousure:@escaping()->NSDictionary){
public static func make<T:Decodable>(_ type:T.Type, _ overload:NSDictionary? = nil) -> T?{
Я регистрирую его в словарь типа
static var factories = [String: () -> NSDictionary]()
Таким образом, я могу создать новый объект из словаря, просто расшифровав его
при его вызове Factory.make(MyType.self)
Однако я хочу, чтобы он был немного более мощным и быть в состоянии сделать фабрики из словаря, содержащего другой класс
Factory.make(MyType.self) {[
"name": A random name,
"subObject": SubOject.self
}]
И вот когда я сталкиваюсь с проблемой, обнаружить этот подобъект и вызвать make
finalDict.allKeys.forEach { key in
if let className = finalDict[key] as? AnyClass {
print(className)
//finalDict[key] = Factory.make(className.self)
//finalDict[key] = Factory.make(className)
}
}
Я могу не делаю этого, я пытался привести к AnyClass, AnyObject.Type ... но все они приводят к сбою компилятора,
Знаете, как это исправить?
Спасибо!