2014-11-09 2 views
0

Я хочу преобразовать строку в тип класса.Преобразование строки в тип класса в Swift

func getViewController(sbName: String, vcName: String, vcType: String) -> UIViewController{ 
    let classType = ????? //What to put here? 
    let sb = UIStoryboard(name: sbName, bundle: nil) 
    var vc = sb.instantiateViewControllerWithIdentifier(vcName) as classType 

    return vc 
} 

Если бы кто-нибудь мог привести меня в правильном направлении, я был бы очень признателен! У меня есть чувство, что есть способ сделать это, но не смог найти способ.

ответ

2

Если вы беспокоитесь только о Objective-C классов на основе, вы можете использовать NSClassFromString("ClassName")

Однако, ваш метод явно возвращения UIViewController. Кастинг vc типа класса не поможет вам вообще.

Возможно, обобщенный метод будет лучше для вас:

func getViewController<T: UIViewController>(sbName: String, vcName: String) -> T { 
    let sb = UIStoryboard(name: sbName, bundle: nil) 
    var vc = sb.instantiateViewControllerWithIdentifier(vcName) as T 
    return vc 
} 

типа может быть выведено из переменной, которую вы пытаетесь присвоить это:

var viewController: MyViewController = getViewController("ASDF", "ASDF") 
+0

Спасибо, это фиксированная моя проблема слишком. Ваш ответ должен быть принят! – Pieter

Смежные вопросы