繁体   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