小白第一次写文章,望大神们多指点指点!
因为自己使用过JAVA的反射机制,因此在使用swift的时候也想使用swift的反射机制时,在一个大神的文章里面意外的碰到了swift的一种特殊的写法,因为一直没有碰到过swift的这种写法,一直不理解这种写法的意思是什么。
let user = Users(userInfo:userInfo!)
let mirror = Mirror(reflecting: user)
let children = mirror.children
for case let (label?, value) in children {
}
然后自己百度了一下,或许没明白什么意思,没找到关键字,也没百度到,然后顺带就google了一下,第一个就跑到apple官方的文档里面去了,也就是在这里面我找到了自己想要的答案。
在这段内容里面我找到了自己想知道的内容。
当我使用for case in去循环children的时候,循环语句就会去匹配我们所设置的条件,label?的时候,循环就只会匹配label不为空的值。当label不设置可选值的时候,会循环出所有的内容。或许我语言组织的有点不好理解,当你看了我写的这个小的测试demo就能明白了。
let ints: [Int?] = [nil,nil,1,2,nil,3]
for case let number? in ints {
print(number)
}
这个时候输出的内容为:1、2、3
当我把number?改为number的时候,输出内容变成了:
到这里我想大家就很明白这个语法的使用了。