Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何强制将结构从超级类型转换为新类型?_Ios_Swift - Fatal编程技术网

Ios 如何强制将结构从超级类型转换为新类型?

Ios 如何强制将结构从超级类型转换为新类型?,ios,swift,Ios,Swift,从下面的代码中,我创建了struct类型的实例 问题是我想创建一个数组,它包含任何带有supernoob协议的结构 但是我不知道如何将它从祖先类型(supernoob)转换为noob类型,如果不转换,我无法访问(var-pro) 在使用类时,我可以很容易地转换它,但我不知道如何使用struct import UIKit protocol supernoob{ func superdoNoob() var supernub:String { get set } } struct noo

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

问题是我想创建一个数组,它包含任何带有
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

只要通过执行
if let…

for item in array {
    if let noob = item.mynoob as? noob {
        print(noob.pro)
    }
}

只要通过执行
if let…

for item in array {
    if let noob = item.mynoob as? noob {
        print(noob.pro)
    }
}

让noob=ufo.mynoobas的问题在哪里?noob,
let pro=noob?.pro
。问题在哪里?noob,
让pro=noob?.pro