泛型类,带有带关联值的Enum



我试图创建一个从具有相关值的enum继承的通用UITableViewCell
这是我尝试过的:

枚举声明:

enum Content: Equatable  {
case text(String)
case image(UIImage)
case error(Error)
case indicator
}

UITableViewCell声明:

class MessageTableViewCell<T: Content>: UITableViewCell {
var content: T?
}

但是用

Type 'T' constrained to non-protocol, non-class type 'Content'

我试图设置我的单元格与不同类型的"内容视图"取决于它的内容。请注意:我使用XIB为单元的接口,所以子类化是不可能的(我认为)。任何建议将非常感激!

根据错误,您需要将其约束为协议或类。您可以尝试下面的代码:

enum Content  {
case text(String)
case image(UIImage)
case error(Error)
case indicator
}
protocol CellContent {
var content: Content { get set }
}
class MessageTableViewCell<T: CellContent>: UITableViewCell {
var content: T?
}