代码之家  ›  专栏  ›  技术社区  ›  Cody Weaver

数组上的条件绑定

  •  0
  • Cody Weaver  · 技术社区  · 10 年前

    有没有办法使用 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")
    }
    
    2 回复  |  直到 10 年前
        1
  •  1
  •   Cristik    10 年前

    您可以使用 filter 功能和用途 first 而不是 [0] ,以避免在筛选的数组没有元素时发生崩溃:

    if let view = self.view.subviews.filter{ $0.tag == 1 }.first {
    
        2
  •  0
  •   Community Mohan Dere    9 年前

    Swift 3添加了 Sequence.first(where:) 方法,它可以替换对 filter 和 first 在里面 Cristik's answer .

    的优点 first(where:) 结束 filter { ... }.first (a)代码变得稍微清晰;(b)更重要的是,当数组较大或闭包昂贵时,因为在找到第一个匹配后它会停止,所以性能会更好。

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