我尝试使用从 NSClassFromString 创建的类来执行类方法,但是我失败了。
在Objective-C中,它很简单:
{{1}}
在Swift中,这并不容易:
{{1}}
到目前为止,我的Swift代码中显示的错误是:
1.'#selector'的争论并不是指' @ objc'方法,属性或初始化程序
2. Stastic member' cellType'不能用于类型' CTFeedbackCellItem'的实例。
答案 0 :(得分:2)
试试这个:
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
guard let reuseIdentifier = reuseIdentifier else {
fatalError("bad usage")
}
guard let itemClass = NSClassFromString(reuseIdentifier) as? CTFeedbackCellItem.Type else {
fatalError("bad reuseIdentifier")
}
super.init(style: itemClass.cellStyle(), reuseIdentifier: reuseIdentifier)
}
(如果您已将cellStyle
作为类属性实施,请将itemClass.cellStyle()
更改为itemClass.cellStyle
。)
类对象不是类的实例,因此不应该像实例一样强制转换它。如果要调用类方法,则将其强制转换为元类。无需使用#selector
。