为什么不编译以下内容:
extension Array {
func firstWhere(fn: (T) -> Bool) -> T? {
for x in self {
if fn(x) {
return x
}
}
return nil
}
}
var view = UIView()
// Do setup here of view if you want (but shouldn't be necessary)
let x = view.subviews.firstWhere { $0.tag? == 1 && $0.userInteractionEnabled } as? UIView
编译器说:找不到会员' userInteractionEnabled'
答案 0 :(得分:1)
由于view.subviews
的类型为[AnyObject]
,因此您必须先将其[UIView]
强制转换为userInteractionEnabled
。
所以:
(view.subviews as! [UIView]).firstWhere( ... )
而且我不确定您使用的是哪个版本的Xcode,但是这(我的意思是不需要tag
末尾的问号):
let x = (view.subviews as! [UIView]).firstWhere { $0.tag == 1 && $0.userInteractionEnabled }
在Xcode 6.3中编译得很好。