我有这个for-in循环:
for button in view.subviews { }
我试过这样:for view in view.subviews as AClass
但它不工作,并给我一个错误:’AClass’不符合协议’SequenceType’
我试过这样:for button:AClass in view.subviews
但两者都不工作。
在这种情况下,您正在投射view.subviews而不是按钮,因此您需要将它向下转换到所需类型的数组:
原文链接:https://www.f2er.com/swift/321143.html对于Swift 1.2和更高版本:
for button in view.subviews as! [AClass] { // do something with button }
注意:如果基础数组类型不是[AClass],这将崩溃。这就是什么!作为!告诉你。如果你不确定类型,你可以使用一个有条件的转换?以及可选绑定如果允许:
if let subviews = view.subviews as? [AClass] { // If we get here,then subviews is of type [AClass] for button in subviews { // do something with button } }
对于Swift 1.1和更早版本:
for button in view.subviews as [AClass] { // do something with button }
注意:如果子视图不是类型AClass,这也将崩溃。上面列出的安全方法也适用于早期版本的Swift。