gpt4 book ai didi

swift - 多次使用相同的闭包参数将无法编译

转载 作者:行者123 更新时间:2023-11-30 10:16:34 25 4
gpt4 key购买 nike

为什么它不编译以下内容:

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”

最佳答案

因为view.subviews的类型是[AnyObject],所以你必须先将其转换为[UIView]才能得到用户交互启用。所以:

(view.subviews as! [UIView]).firstWhere( ... )

我不确定您使用的是哪个版本的 Xcode,但是这个(我的意思是不需要 tag 末尾的问号):

let x = (view.subviews as! [UIView]).firstWhere { $0.tag == 1 && $0.userInteractionEnabled }

在 Xcode 6.3 中编译良好。

关于swift - 多次使用相同的闭包参数将无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29670313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com