小白第一次寫文章,望大神們多指點指點!
因為自己使用過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不設置可選值的時候,會循環出所有的內容?;蛟S我語言組織的有點不好理解,當你看了我寫的這個小的測試demo就能明白了。
let ints: [Int?] = [nil,nil,1,2,nil,3]
for case let number? in ints {
print(number)
}
這個時候輸出的內容為:1、2、3
當我把number?改為number的時候,輸出內容變成了:
到這里我想大家就很明白這個語法的使用了。