NSPredicate用相同的标签形式查找UIView形式self.view.subviews Swift

时间:2015-12-07 13:43:33

标签: ios swift uiview predicate

我想在self.superview?.subviews的一个数组中找到标记为1的UIViews但是我收到错误类型[UIView]的值没有成员filteredArrayUsingPredicate。

//This is my code
   let predicate:NSPredicate = NSPredicate(format: "self.tag == 1")
   var arrFilteredVw = []
   if(self.superview?.subviews.count>0){
        arrFilteredVW = self.superview?.subviews.filteredArrayUsingPredicate(predicate)
   }

我的简单问题是我不想在这里使用for in循环如何使用谓词。

1 个答案:

答案 0 :(得分:4)

这是因为filteredArrayUsingPredicate被定义为NSArray上的扩展名,而不是Swifts Array(在您的情况下为[UIView])。

在Swift中,您可以通过这种方式实现同​​样的目标:

var arrFilteredVw = []
if(self.superview?.subviews.count>0){
    arrFilteredVW = self.superview?.subviews.filter { (subview) -> Bool in
        return subview.tag == 1
    }
}