从下面的代码中,我创建了结构类型的实例。
问题是我想创建包含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
答案 0 :(得分:0)
只需执行if let...
for item in array {
if let noob = item.mynoob as? noob {
print(noob.pro)
}
}