Swift中的类型转换
写在前面:1,类型转换的两种方式
2,as!和as?的用法
3,类型判断中 is和===的用法
类型转换方式一,利用类型的构造器进行转换
- let str = ""
- var i = Int(str)
- if(i == nil){
- print("变量i为nil不能进行运算")
- }else{
- //由于变量i是一个可为空的变量,因此需要强制解封
- let rs = i! +
- print("变量i进行运算后的结果为\(rs)")
- }
类型转换方式二,使用as?和as!进行转换
- class A {
- func am(){
- print("am method")
- }
- }
- class B: A {
- func bm() {
- print("bm method")
- }
- }
- class C {
- }
- let ins: A = B()
- let insb1 = ins as? B
- let insb2 = ins as! B
- //使用as?进行转换时,若转换失败则会返回nil
- if insb1 == nil {
- print("change failed..\(insb1)")
- }else{
- print("change success")
- insb1?.am()
- }
注意:使用as?进行转换时,若转换失败则会返回nil
- class A {
- func am(){
- print("am method")
- }
- }
- class B: A {
- func bm() {
- print("bm method")
- }
- }
- class C {
- }
- let ins: A = B()
- let insb1 = ins as? B
- let insb2 = ins as! B
- if insb2 == nil {
- //这个分支将永远不会被执行
- print("change failed..\(insb2)")
- }else{
- print("change success")
- insb2.am()
- }
注意:使用as!进行转换时,要么转换成功,若失败程序将会产生异常
类型判断:is
- //判断的是两个对象的类型是否一致,因此下面代码if条件满足
- if ins is B {
- print("is b")
- }
类型判断:===
- //判断的是两个对象所引用的内存地址是否相同,因此下面代码无输出
- let ins3 = B()
- let ins4 = B()
- let ins5 = ins3
- if ins3 === ins4 {
- print("true...")
- }
Swift中的类型转换的更多相关文章
- Swift 中使用 SwiftyJSON 制作一个比特币价格 APP
Swift 中处理 JSON 数据有很多种方式,可以使用原生的 NSJSONSerialization,也可以使用很多第三方库.原生的 NSJSONSerialization 方式这篇文章中介绍过.这 ...
- swift中文文档- 类型转换
未翻译完 待续(英语烂,求斧正) Type Casting 类型转换 Type casting is a way to check the type of an instance, and/or to ...
- Swift中的as操作符
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...
- swift 学习- 21 -- 类型转换
// 类型转换 可以判断实例的类型, 也可以将实例看做其父类的或者子类的实例 // 类型转换在 Swift 中使用 is 和 as 操作符实现, 这两个操作符提供了一种简单达意的方式去检查值的类型 或 ...
- [ios][swift]swift中如果做基本类型的转换
在swift中如果做基本类型的转换的?比如Int -> Float(Double)Double -> 保留两位小数String -> IntDouble -> String 有 ...
- Swift中实现Array数组和NSArray数组的相互转换与遍历
Array是Swift中的数组数据类型.而NSArray是OC中的数组数据类型.两者有差别有联系.在Swift中有时候难免会使用到OC中的一些东西.今天我们就来Swift中使用NSArray和Arra ...
- swift 中关于open ,public ,fileprivate,private ,internal,修饰的说明
关于 swift 中的open ,public ,fileprivate,private, internal的区别 以下按照修饰关键字的访问约束范围 从约束的限定范围大到小的排序进行说明 open,p ...
- 阿里巴巴最新开源项目 - [HandyJSON] 在Swift中优雅地处理JSON
项目名称:HandyJSON 项目地址:https://github.com/alibaba/handyjson 背景 JSON是移动端开发常用的应用层数据交换协议.最常见的场景便是,客户端向服务端发 ...
- JavaScript中数据类型转换总结
JavaScript中数据类型转换总结 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = " ...
随机推荐
- Eos开发——构造查询条件
1.ajax 方式 var data = { orgid :orgid,year:year ,month: month,type:type,sortField:'sellEmpname' ,sortO ...
- Sql基础
SELECT 列名称 FROM 表名称 SELECT * FROM 表名称 SELECT DISTINCT Company FROM Orders 去重 SELECT 列名称 FROM 表名称 WHE ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux 入门之修改主机名
vi /etc/hosts 修改 local.domain 为自己的主机名比如 compute
- [笔记]linux用户与用户组
sudo useradd -m john 自动建立主目录 sudo passwd john sudo useradd -g groupusers mike sudo useradd -s /bin/b ...
- python安装后推荐的安装两款文本编辑器
Notepad++ 7.2.2和 Sublime Text --道心 Notepad++ 7.2.2 Notepad++ 是一款非常有特色的编辑器,是开源软件,可以免费使用.支持的语言: C, C++ ...
- Visual Studio Emulator for Android 初体验
Visual Studio Emulator for Android已经推出一段时间了,但一直没有用过.前两天下载安装用了下,整体感觉比谷歌自带的模拟器强多了.Visual Studio Emulat ...
- [游戏开发-学习笔记]菜鸟慢慢飞(九)- NGUI- UIWidget(官方说明翻译)
- 字符串编辑距离(Levenshtein距离)算法
基本介绍 Levenshtein距离是一种计算两个字符串间的差异程度的字符串度量(string metric).我们可以认为Levenshtein距离就是从一个字符串修改到另一个字符串时,其中编辑单个 ...
- WinCE项目应用之车载导航
WinCE车载导航系统是我过去几年投入精力比较多的一个项目.我的主要工作内容是BSP的移植.硬件模块的调试和WinCE系统的深度定制.如TDA7415驱动.TDA7415均衡器.慧翰车载蓝牙模块.华为 ...