- 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
}
}
- 使用时出现问题
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