我正在尝试将单元格转换为动态类类型:
struct Item {
var cellClass: AnyClass
}
let cellClass = item.cellClass
let cell: cellClass = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath)
但是,出现错误:
cellClass is not a type
正确的方法是什么?
最佳答案
AnyClass
被定义为AnyObject.Type
,并且您不能创建AnyObject
类型的实例,它没有公共初始化程序...
但是,如果您知道所有单元格都是UITableViewCell
的子类型,则可以执行以下操作:
struct Item {
var cellClass: UITableViewCell.Type
}
class Test: UITableViewCell {
var str = ""
}
// create an instance of Item with the class Test
let i = Item(cellClass: Test.self)
// then create an instance of Test by using the instance of Item
var t = i.cellClass.init()
然后,当您询问
if t is Test
时,它会说true
。