数组上的条件绑定

时间:2016-01-05 17:04:01

标签: swift

有没有办法在数组上使用if letIf数组的值为index let,它等于此值。

if let view = self.view.subviews({$0.tag == 1 })[0] {
      view.backgroundColor = UIColor.blackColor()
} else {
     print("No view with tag 1")
}

2 个答案:

答案 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中对filterfirst的调用。

first(where:)优于filter { ... }.first的优点是:(a)代码变得更清晰;(b)更重要的是,当数组很大或闭包很昂贵时会有更好的性能,因为它在查找后停止第一场比赛。

if let view = self.view.subviews.first { $0.tag == 1 } {
    ...
}