12.Swift学习之Any、AnyObject与类型转化
Any、AnyObject
- Any是一个空协议集合的别名,它表示没有实现任何协议,因此它可以是
任何类型
,包括类实例与结构体实例。可以表示任何类型,包括函数类型。
- AnyObject是一个成员为空的协议,
任何对象
都实现了这个协议。可以表示任何类类型的实例。
类型转化符号
-
is
: 使用类型检查操作符 ( is )来检查一个实例是否属于一个特定的子类。如果实例是该子类类型,类型检查操作符返回 true ,否则返回 false 。 -
as
: 类型转换操作符( as? 或 as! )进行向下类型转换至其子类类型。- 如果不确定向下转换类型是否能够成功,使用条件形式的类型转换操作符 ( as? )
- 如果确定向下转换类型会成功时,使用强制形式的类型转换操作符( as! )
例子
// 1.定义数组 let array : [Any] = [12, "zhangsan"] // 2.取出数组中的第一个和最后一个元素 let objcFirst = array.first! let objcLast = array.last! // 3.判断第一个元素是否是一个Int类型 if objcFirst is Int { print("是Int类型") } else { print("非Int类型") } // 4.转成真正的类型来使用 // 4.1.as? 将Any转成可选类型,通过判断可选类型是否有值,来决定是否转化成功了 let name = objcLast as? String print(name) // 结果:Optional("zhangsan") // 4.2.as! 将Any转成具体的类型,如果不是该类型,那么程序会崩溃 let name2 = objcLast as! String print(name2) // 结果:zhangsan
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
11.Swift学习之可选型
可选类型(Optional)的介绍 说明: 可选类型是Swift中比较晦涩难懂的一个知识点 先了解定义,多利用Xcode的提示来使用 随着学习的深入,慢慢理解其中的原理和好处 概念: 在OC开发中,如果一个变量暂时不使用,可以赋值为0(基本属性类型)或者赋值为nil(对象类型) 在Swift中,nil也是一个特殊的类型,与Int,String一样,又因为Swift是强类型语言,因此不能直接将nil赋值给其他类型的数据 开发中碰到nil在所难免.因此推出了可选类型 可选类型的取值: nil 有值 定义可选类型 定义一个可选类型有两种写法 最基本的写法 语法糖(常用) // 写法一:定义可选类型 let name : Optional<String> = nil // 写法二:定义可选类型,语法糖(常用) let name : String? = nil 可选类型的使用 演练一:给可选类型赋值 // 定义可选类型 var string : Optional<String> = nil // 给可选类型赋值 // 错误写法:因此该可选类型中只能存放字符串 string...
- 下一篇
Android一个包含表格的图标库
之前有写过一个图表lib,但是开发的速度,大多很难跟上产品需求变化的脚步,所以修改了下原先的图表库,支持图表下面能整合table显示对应的类目,用曲线替换了折线,支持多曲线的显示,增加了显示的动画,,增加了一些可定制的属性,支持水平柱状图和叠加柱状图,以及多曲线图和饼状图的显示 效果图 各种图表的使用方式 1.饼状图 这个和原先的使用一样,只不过增加了一个动画,可以参看之前的文章,饼状图使用。 2.水平多柱状图 2.1 xml布局 <wellijohn.org.varchart.hor_bar_with_line_chart.ChartLine android:id="@+id/chartline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/white" app:default_x_visible_num="4.2"//一个屏幕中显示多少列 app:y_interval="40dp"//Y轴的间距 app:y_num_tex...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Linux系统CentOS6、CentOS7手动修改IP地址
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Red5直播服务器,属于Java语言的直播服务器