加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

for-loop – 在for-in循环中类型转换

发布时间:2020-12-14 06:06:15 所属栏目:百科 来源:网络整理
导读:我有这个for-in循环: for button in view.subviews {} 现在我想要按钮被转换为自定义类,所以我可以使用它的属性。 我试过这样:for view in view.subviews as AClass 但它不工作,并给我一个错误:’AClass’不符合协议’SequenceType’ 我试过这样:for b
我有这个for-in循环:
for button in view.subviews {
}

现在我想要按钮被转换为自定义类,所以我可以使用它的属性。

我试过这样:for view in view.subviews as AClass

但它不工作,并给我一个错误:’AClass’不符合协议’SequenceType’

我试过这样:for button:AClass in view.subviews

但两者都不工作。

在这种情况下,您正在投射view.subviews而不是按钮,因此您需要将它向下转换到所需类型的数组:

对于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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读