在 Swift 中迭代对象类属性 [英] iterate over object class attributes in Swift
本文介绍了在 Swift 中迭代对象类属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Swift 中是否有一种简单的方法来迭代类的属性.
即我有一个 Person 类,它有 3 个属性:姓名、姓氏、年龄.
有没有类似的东西
用于 Person { 中的属性println("\(attribute): \(attribute.value)")}
输出例如:
姓名:鲍勃姓氏:Max年龄:20
解决方案
他们在 Swift 2.0 中移除了反射.这就是我枚举属性和值的方式.
class People {var name = "";var last_name = "";变量年龄 = 0}var 用户 = 人()user.name = "用户名";user.last_name = "用户姓氏";用户.年龄 = 20让 mirrored_object = Mirror(反射:用户)//斯威夫特 2for (index, attr) in mirrored_object.children.enumerate() {如果让 property_name = attr.label 作为 String!{打印(属性\(索引):\(property_name)= \(属性值)")}}//Swift 3 及更高版本for (index, attr) in mirrored_object.children.enumerated() {如果让 property_name = attr.label 作为 String!{打印(属性\(索引):\(property_name)= \(属性值)")}}
<块引用>
输出:
属性 0:名称 = 用户名
属性 1:last_name = 用户姓氏
属性 2:年龄 = 20
Is there a Simple way in Swift to iterate over the attributes of a class.
i.e. i have a class Person, and it has 3 attributes: name, lastname, age.
is there something like
for attribute in Person {
println("\(attribute): \(attribute.value)")
}
the output would be for example:
name: Bob
lastname: Max
age: 20
解决方案
They have removed reflect within Swift 2.0. This is how I am enumerating attributes and values.
class People {
var name = ""
var last_name = ""
var age = 0
}
var user = People()
user.name = "user name"
user.last_name = "user lastname"
user.age = 20
let mirrored_object = Mirror(reflecting: user)
// Swift 2
for (index, attr) in mirrored_object.children.enumerate() {
if let property_name = attr.label as String! {
print("Attr \(index): \(property_name) = \(attr.value)")
}
}
// Swift 3 and later
for (index, attr) in mirrored_object.children.enumerated() {
if let property_name = attr.label as String! {
print("Attr \(index): \(property_name) = \(attr.value)")
}
}
Output:
Attr 0: name = user name
Attr 1: last_name = user lastname
Attr 2: age = 20
这篇关于在 Swift 中迭代对象类属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文