我有異類這樣夫特:協議擴展和數組
struct Cat: Hashable {
let name: String
let catId: Int
}
struct SubCat: Hashable {
let name: String
let catId: Int
let parentCatId: Int
}
現在我有一個的tableView需要或者顯示貓或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]數組的返回類型更改爲[可選],則不會編譯。
任何人都可以幫助我嗎?我想我在這裏錯過了一些東西。 謝謝。
我看你投它,當你設置你的陣列,通過測試協議。像這樣: 'if let selectableArray = catArray as?可選{} 讓我知道它是否可以幫助您 – jlngdt
我已經嘗試過。編譯器說Selectable不是Cat的子類型: -/ – Khal
哦,是的,cat是一個結構體,也許通過創建它而不是類? – jlngdt