#swift #swift5
#swift #swift5
Вопрос:
ниже приведен код:
let cls = NSClassFromString("UIView") as? UIView.Type
Я хочу, чтобы извлечь этот код как функцию :
func ClassFromString(_ className: String, _ classType: AnyClass) -> AnyClass?{
return NSClassFromString("UIView") as? classType // it is error
}
но это не работает. как это сделать?
Комментарии:
1. В чем смысл вашего кода, если вам нужно указать тип класса? Тогда вы могли бы также сделать
var view: UIView
напрямую, чего мне здесь не хватает?2. Этот код довольно похож на objective-c . Я думаю, есть более быстрый способ
Ответ №1:
Вы можете создать универсальную функцию, подобную этой
func classFromString<T>(_ className: String, _ classType: T) -> T? {
return NSClassFromString(className) as? T
}
И используйте его следующим образом
if let cls = classFromString("UIView", UIView.self) {
let view = cls.init()
}
Ответ №2:
Попробуйте с этим:
func getClassFromString<T>(_ cName: String, cType: T) -> T.Type {
return NSClassFromString(cName) as? T.self
}