NSPredicate 查找具有相同标记形式的 UIView self.view.subviews Swift
NSPredicate to find UIView with same tag form self.view.subviews Swift
我想从 self.superview?.subviews 中的一个数组中找到标签为 1 的 UIView,但出现错误 [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
循环 如何使用谓词进行循环。
这是因为 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
}
}
我想从 self.superview?.subviews 中的一个数组中找到标签为 1 的 UIView,但出现错误 [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
循环 如何使用谓词进行循环。
这是因为 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
}
}