Swift: как взять AnyObject.Type в качестве параметра? - PullRequest
0 голосов
/ 10 апреля 2019

есть код ниже:

let cls = NSClassFromString("UIView") as? UIView.Type

Я хочу, чтобы этот код был функцией :

func ClassFromString(_ className: String, _ classType: AnyClass) -> AnyClass?{
   return NSClassFromString("UIView") as? classType   // it is error
}

но это не работает. как сделать?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Вы можете создать общую функцию, подобную этой

func classFromString<T>(_ className: String, _ classType: T) -> T? {
    return NSClassFromString(className) as? T
}

И использовать ее следующим образом

if let cls = classFromString("UIView", UIView.self) {
   let view = cls.init()
}
0 голосов
/ 10 апреля 2019

Попробуйте с этим:

func getClassFromString<T>(_ cName: String, cType: T) -> T.Type {
    return NSClassFromString(cName) as? T.self
}
...