arrays - swift : protocol extension and arrays

标签 arrays swift struct protocols

我有一些像这样异构的结构对象

struct Cat: Hashable {
   let name: String
   let catId: Int
}
struct SubCat: Hashable {
   let name: String
   let catId: Int
   let parentCatId: Int
}

现在我有一个需要显示 Cat 或 SubCat 的 tableView。我的第一选择是用协议(protocol)扩展这两个类:

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 }

关于arrays - swift : protocol extension and arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32964601/

相关文章:

php - 如何使用zend框架转换json数据中的对象?

javascript - Javascript 中解决负零的优雅方法

python - Numpy 从二进制字符串转换为 float 组

ios - 漏洞 : `UITextField.appearance().tintColor` changes `rightBarButtonItem` color

swift - 一堆 if 语句作为函数以及如何在 swift 中调用它

c - 在链接列表中对空指针进行类型转换

sql - 通过 BigQuery 中的联接构建多级嵌套结构(使用嵌套和重复字段)

ruby - Ruby 中加星标的变量是什么?

转换结构指针

ios - 尝试使用 AVFoundation 从前置摄像头捕获照片时出现 fatal error