我正在尝试将单元格转换为动态类类型:

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

09-25 19:24