![](/img/trans.png)
[英]Swift: Declare in an extension that an array of a type conforms to a protocol
[英]Swift : protocol extension and arrays
我有一些这样的异质结构对象
struct Cat: Hashable {
let name: String
let catId: Int
}
struct SubCat: Hashable {
let name: String
let catId: Int
let parentCatId: Int
}
现在,我有一个tableView需要显示Cat或SubCat。 我的第一选择是使用协议扩展两个类:
protocol Selectable {
func asString() -> String
}
我的结构变成:
struct Cat: Hashable, Selectable {
let name: String
let catId: Int
func asString() -> {
return self.name
}
}
struct SubCat: Hashable, Selectable {
let name: String
let catId: Int
let parentCatId: Int
func asString() -> {
return self.name
}
}
到目前为止,它一直有效。 我在TableViewController中声明了一个[Selectable]对象,使用asString()填充了单元格。 像魅力一样编译。
但是,这就是事情。 我有一个CatModel类和一个SubCatModel类,每个类都返回每个结构[Cats]和[SubCats]的数组。当我尝试将[Cat]数组分配给[Selectable]数组时,它不会编译。 如果将[Cat]数组的返回类型更改为[Selectable],它将无法编译。
谁能帮我这个? 我想我在这里错过了一些东西。 谢谢。
将Cat
数组映射到Selectable
数组:
let selectableArray = catArray.map { $0 as Selectable }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.