【问题标题】:How to loop through array of classes with different types and print their properties in swift?如何遍历具有不同类型的类数组并快速打印它们的属性?
【发布时间】:2019-06-12 20:27:45
【问题描述】:

我正在学习使用类,现在我需要遍历具有不同类型的类数组并打印它们的属性。

当只有一个超类和几个子类时这不是问题,但是当我添加另一个超类和子类时出现问题。 xCode 告诉我将数组转换为 [Any] 并且我失去了丰富类属性的能力。

let human = People(name: "John Dou", height: 180, weight: 80, gender: "male") //every class inherits from class People this way
var peopleArray = [human, cook, manager, fighter] // this is an array of classes with type People

for person in peopleArray {
print(person.name, person.height, person.weight, person.gender)

person.say()
}

这个 for in 循环可以正常工作。

然后我创建了几个类,它们继承自 Marsian 类:

let marsian = Marsian(numberOfLegs: 1, planetOfBirth: "Mars")

然后我尝试将每个类的实例放入一个数组中:

let unitedRaceArray = [marsian, snikersian, twixian, austronaut, fighter, manager, cook, human]

但它显示了一个错误:“只能将异构集合文字推断为 '[Any]';如果这是故意的,请添加显式类型注释”

当然,对于 [Any] 类型,“for in”循环不起作用。

【问题讨论】:

  • 我想说,在你的 for 循环中,你可以将每个项目转换为?人还是一样? Marsian 然后你可以访问它的属性
  • 火星人,不是火星人。
  • 铸造每个项目都有帮助,谢谢你,塞缪尔

标签: arrays swift class


【解决方案1】:

let unitedRaceArray: [People]

你应该没事。如果你想访问 Martian 的 write

if let martian = person as? Martian {
}

【讨论】:

    猜你喜欢
    • 2017-05-28
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多