Предполагам, че прочетох повечето от SO въпросите и отговорите на Google по този въпрос, но все още не мога да го накарам да работи. Вземете този пример за код:
import UIKit
class Person: NSObject {
var name = "Pieter"
}
let PersonClass: AnyClass? = NSClassFromString("Person")
let person = PersonClass()
print(person.name)
Промяната на NSClassFromString("Person")
в NSClassFromString("MyAppName.Person")
не прави разлика. Добавяне на as! NSObject.Type
нито зад декларацията на PersonClass. Добавяне на @obcj(Person
преди декларацията на класа също.
Целта в реалния живот е да се прочетат имена на класове от база данни и съответно да се зареди подходящата сценария / UIViewController. Така че търся начин да предам името на класа UIViewController като String и да инстанцирам UIStoryboard с него.
Как да стане това?
Редактиране: ето какво опитвам в момента за сценария от реалния живот след вашите предложения:
let storyboard = UIStoryboard(name: "MyStoryboard", bundle: nil)
let MyClassName = "MyApp.MyTableViewController"
let MyClass = NSClassFromString(MyClassName) as! UITableViewController.Type
let controller = storyboard.instantiateInitialViewController() as! MyClass
Дава грешка, казвайки "MyClass" is not a type
. Не мога да го премахна или ще получа грешка, че не може да преобразува от AnyClass
.