我有一组协议能够在UITableView中显示元素:
protocol TableRepresentableRow {
var title: String { get }
var subtitle: String { get }
}
extension TableRepresentableRow {
var title: String {return ""}
var subtitle: String {return ""}
}
protocol TableRepresentableSection {
var title: String { get }
var count: Int { get }
subscript(index: Int) -> TableRepresentableRow {get}
}
extension TableRepresentableSection {
var title: String {
return ""
}
}
单个元素符合TableRepresentableRow协议:
extension ServicesSummary.Service: TableRepresentableRow {
var title: String {
return serviceNumber
}
var subtitle: String {
return serviceUserName
}
}
我希望在TableRepresentableSection中也可以推断出协议一致性,因为ServicesSummary.Service是TableRepresentableRow但是,这不会发生:
extension Array: TableRepresentableSection where Element == ServicesSummary.Service {
// Error: the compiler requires me to add subscript too, while it should be inferred
subscript(index: Int) -> TableRepresentableRow {
<#code#>
}
var title: String {
return first?.businessType.rawValue.uppercased() ?? ""
}
}
为什么我会收到此错误?