在Swift 3.2中,这个(let id = row.tableViewCellClass?.reuseIdentifier
)起作用了:
class DrillDownTableViewCell {
class var reuseIdentifier: String
{
return String(describing: self)
}
}
class RowViewModel: NSObject
{
var tableViewCellClass: AnyClass?
}
class Foo {
var row : RowViewModel?
func setup() {
row = RowViewModel()
row?.Class = DrillDownTableViewCell.self
}
func doThings() {
let id = row?.tableViewCellClass?.reuseIdentifier
}
}
在我的Swift 4更新后,它显示了"实例成员' reuseIdentifier'不能在类型' AnyObject'。
上使用如何访问类的哪个元类信息存储在AnyClass变量中?
答案 0 :(得分:0)
(我假设你的意思是在?
row
之后doThings()
。我认为这是一个错字而不是问题的一部分。还有其他几个?
在这里缺席以及其他一些我不会深入研究的错别字。)
如果您希望tableViewCellClass
拥有reuseIdentifier
类属性,则它不属于AnyClass
类型。有许多类没有该属性。您需要符合协议的类:
protocol Identifiying {
static var reuseIdentifier: String { get }
}
因此,您的模型需要Identifying
类:
class RowViewModel: NSObject {
var tableViewCellClass: Identifiying.Type?
}
然后你可以按照预期使用它。