Сохраненный тип для параметра функции - PullRequest
0 голосов
/ 20 января 2020

У меня возникает следующая проблема,

У меня есть функция 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 ... но все они приводят к сбою компилятора,

Знаете, как это исправить?

Спасибо!

...