swift 带泛型class,怎么存数组,并使用

  1. swift 带泛型class,怎么存数组,并使用
    • 定义一个 protocol BaseCellProtocol,
    • class TestBuilder: NSObject 泛型实现它
protocol BaseCellProtocol: NSObjectProtocol {
    static func cellHeight(data: Any?) -> CGFloat
}

class TestBuilder<T: BaseCellProtocol>: NSObject {

    typealias InitBlock = (_ cell: T) -> (Void)

    var value: AnyClass {
        return T.self //NSStringFromClass(T.self)
    }

    var initBlock: InitBlock?
    init(initBlock: InitBlock? = nil) {
        self.initBlock = initBlock
    }
}
  1. 使用时出现问题
class Test: NSObject {
    var array = Array<Any>()
    var two = [TestBuilder]()
    override init() {
        super.init()
    }

    func add<T: BaseCellProtocol>(item: TestBuilder<T> ) -> Void {
        array.append(item)
    }

    func use() -> Void {
        let fi = array.first as? TestBuilder<<#T: BaseCellProtocol#>>
    }
}
  • 怎么定义一个 TestBuilder 的数组,拿出来使用时我并不知道它是谁, 图片说明
  • 新手写东西玩,整体功能就是定义一个 UITableView 的 cell 数组,都实现BaseCellProtocol,直接从数组拿数据,使用 block 保证数据的更新

https://www.jianshu.com/p/c1f2bb084d8d