簡體   English   中英

Swift:協議擴展和數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM