如何强制将Struct从超级类型转换为新类型?

时间:2019-07-02 08:19:45

标签: ios swift

从下面的代码中,我创建了结构类型的实例。

问题是我想创建包含supernoob协议任何结构的数组。

但是我不知道如何将其从祖先类型(supernoob)转换为noob类型,我无法在不进行转换的情况下访问(var pro)。

在使用类时,我可以非常轻松地进行转换,但是我对struct不了解。

import UIKit

protocol supernoob{
  func superdoNoob()
  var supernub:String { get set }
}

struct noob: supernoob{
  var supernub: String
  func superdoNoob() {

  }
  var pro:String
}

struct spaceShip{
  var mynoob : supernoob
}

let flyAlien = spaceShip(mynoob: noob(supernub: "choopa", pro: "PO"))
let ufo = spaceShip(mynoob: noob(supernub: "choopa", pro: "PO"))

let array = [flyAlien,ufo]


ufo.mynoob as? noob

1 个答案:

答案 0 :(得分:0)

只需执行if let...

检查是否可以进行强制转换
for item in array {
    if let noob = item.mynoob as? noob {
        print(noob.pro)
    }
}