有没有办法在数组上使用if let
。 If
数组的值为index
let
,它等于此值。
if let view = self.view.subviews({$0.tag == 1 })[0] {
view.backgroundColor = UIColor.blackColor()
} else {
print("No view with tag 1")
}
答案 0 :(得分:1)
您可以使用filter
功能,并使用first
代替[0]
,以避免在已过滤的数组中没有元素时崩溃:
if let view = self.view.subviews.filter{ $0.tag == 1 }.first {
答案 1 :(得分:0)
Swift 3添加了Sequence.first(where:)
方法,该方法可以取代Cristik's answer中对filter
和first
的调用。
first(where:)
优于filter { ... }.first
的优点是:(a)代码变得更清晰;(b)更重要的是,当数组很大或闭包很昂贵时会有更好的性能,因为它在查找后停止第一场比赛。
if let view = self.view.subviews.first { $0.tag == 1 } {
...
}