![](/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.