栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在for-in循环中进行类型转换

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在for-in循环中进行类型转换

对于 Swift 2 和更高版本:

Swift 2 在 for 循环中添加了 大小写模式 ,这使得在 for 循环中进行类型转换更加容易和安全:

for case let button as AClass in view.subviews {    // do something with button}

为什么这比您在 Swift 1.2 和更早版本中可以做的更好?因为 案例模式
允许您从集合中选择特定类型。它仅与您要查找的类型匹配,因此,如果数组包含混合,则只能对特定类型进行操作。

例如:

let array: [Any] = [1, 1.2, "Hello", true, [1, 2, 3], "World!"]for case let str as String in array {    print(str)}

输出:

HelloWorld!

对于 Swift 1.2

在这种情况下,您正在转换

view.subviews
而不是
button
,因此您需要将其转换为所需类型的数组:

for button in view.subviews as! [AClass] {    // do something with button}

注意:如果基础数组类型不是

[AClass]
,则将崩溃。那就是
!
on
as!
告诉你的。如果不确定类型,可以使用条件转换
as?
和可选绑定
iflet

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。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/636378.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号