我不知道在 Swift 中创建实例或寻址它们时如何使用变量: 例如,我如何在循环中执行以下操作(创建实例):
class Guest {
let name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
let guests = [["ann", 1] , ["bob", 2] ...]
使循环等于:
let ann = Guest(name: "ann" , age: 1)
let bob = Guest(name: "bob" , age: 2)
...
编辑:我正在寻找这样的东西:
for i in guests {
let i[0] = Guest(name: i[0] , age: i[1])
寻址示例:
print(guests[0].age)
>>>1
我进行了很多搜索,但得到了关于在类中创建变量的问题。
非常感谢!
最佳答案
您可以使用经典循环来做到这一点:
let input = [("Ann", 1), ("Bob", 2)]
var guests: [Guest] = []
for each in input {
guests.append(Guest(name: each.0, age: each.1))
}
但是,可以使用函数技术更简洁地完成此操作(并避免使用 var
):
let guest = [("Ann", 1), ("Bob", 2)].map { Guest(姓名: $0.0, 年龄: $0.1) }
编辑:基于字典的解决方案(Swift 4;对于 Swift 3 版本只需使用经典循环)
let input = [("Ann", 1), ("Bob", 2)]
let guests = Dictionary(uniqueKeysWithValues: input.map {
($0.0, Guest(name: $0.0, age: $0.1))
})
或者,如果两个客人可以同名:
let guests = Dictionary(input.map { ($0.0, Guest(name: $0.0, age: $0.1)) }) { first, second in
// put code here to choose which of two conflicting guests to return
return first
}
有了字典,你可以这样做:
if let annsAge = guests["Ann"]?.age {
// do something with the value
}
关于swift - 在变量中快速创建对象/实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45989491/