Если вы знаете типы, что вы будете заранее запомните, вы можете обернуть их в перечисление. Это дает вам больший контроль над типами, чем при использовании [Any/AnyObject]
:
enum Container {
case IntegerValue(Int)
case StringValue(String)
}
var arr: [Container] = [
.IntegerValue(10),
.StringValue("Hello"),
.IntegerValue(42)
]
for item in arr {
switch item {
case .IntegerValue(let val):
println("Integer: \(val)")
case .StringValue(let val):
println("String: \(val)")
}
}
Печать:
Integer: 10
String: Hello
Integer: 42
Как вы будете манипулировать обоими типами объектов, лучше всего создать «протокол», который реализует все классы, стиль MVVM. – Francescu