Получить объект класса из класса - PullRequest
0 голосов
/ 04 мая 2020

У меня есть тип класса String, который возвращается из WebService с именем MainViewController, и я хочу получить от него объект класса. Это всегда терпит неудачу.

Это мой код:

    let classStringFromWS = "MainViewController"
    if let viewControllerString = NSClassFromString(classStringFromWS) as? UIViewController.Type {
        let viewController = viewControllerString.init(nibName: classStringFromWS, bundle: nil)
        self.navigationController?.pushViewController(viewController, animated: true)
    }

1 Ответ

0 голосов
/ 04 мая 2020

Здесь возможное решение. Протестировано с Xcode 11.4.

Используйте функцию фабрики (в любом случае, для создания экземпляра класса, класс должен быть доступен, поэтому), предполагая, что он доступен в том же модуле

func createInstance(for className: String) -> UIViewController? {
    // registry of supported controllers
    let classRegistry: [String: UIViewController.Type] = [
        "MainViewController": MainViewController.self
        // other supported controllers here
    ]

    if let aClass = classRegistry[className] {
        return aClass.init(nibName: className, bundle: nil)
    }
    return nil
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...