写在前面: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中的类型转换的更多相关文章

  1. Swift 中使用 SwiftyJSON 制作一个比特币价格 APP

    Swift 中处理 JSON 数据有很多种方式,可以使用原生的 NSJSONSerialization,也可以使用很多第三方库.原生的 NSJSONSerialization 方式这篇文章中介绍过.这 ...

  2. swift中文文档- 类型转换

    未翻译完 待续(英语烂,求斧正) Type Casting 类型转换 Type casting is a way to check the type of an instance, and/or to ...

  3. Swift中的as操作符

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...

  4. swift 学习- 21 -- 类型转换

    // 类型转换 可以判断实例的类型, 也可以将实例看做其父类的或者子类的实例 // 类型转换在 Swift 中使用 is 和 as 操作符实现, 这两个操作符提供了一种简单达意的方式去检查值的类型 或 ...

  5. [ios][swift]swift中如果做基本类型的转换

    在swift中如果做基本类型的转换的?比如Int -> Float(Double)Double -> 保留两位小数String -> IntDouble -> String 有 ...

  6. Swift中实现Array数组和NSArray数组的相互转换与遍历

    Array是Swift中的数组数据类型.而NSArray是OC中的数组数据类型.两者有差别有联系.在Swift中有时候难免会使用到OC中的一些东西.今天我们就来Swift中使用NSArray和Arra ...

  7. swift 中关于open ,public ,fileprivate,private ,internal,修饰的说明

    关于 swift 中的open ,public ,fileprivate,private, internal的区别 以下按照修饰关键字的访问约束范围 从约束的限定范围大到小的排序进行说明 open,p ...

  8. 阿里巴巴最新开源项目 - [HandyJSON] 在Swift中优雅地处理JSON

    项目名称:HandyJSON 项目地址:https://github.com/alibaba/handyjson 背景 JSON是移动端开发常用的应用层数据交换协议.最常见的场景便是,客户端向服务端发 ...

  9. JavaScript中数据类型转换总结

    JavaScript中数据类型转换总结 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = " ...

随机推荐

  1. java 接口的作用和好处

    1.java 接口的作用 http://blog.csdn.net/hack_bug/article/details/7634737 2.一位Java大牛的回答 很多JAVA初级程序员对于接口存在的意 ...

  2. [Modern OpenGL系列(四)]在OpenGL中使用Shader

    本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/51347440 在上一篇文章中已经介绍了OpenGL窗口的创建.本文接着说如 ...

  3. 记录一次Quartz2D学习(五)

    (四)内主要讲了绘制状态的保存与恢复 本次主要讲述 缩放,旋转,平移等操作 5.附加操作 5.1 旋转 TIP: 旋转操作主要是对本次渲染的图层进行旋转,旋转的中心为左上角顶点 - (void)dra ...

  4. Oracle Partition Outer Join 稠化报表

    partition outer join实现将稀疏数据转为稠密数据,举例: with t as (select deptno, job, sum(sal) sum_sal from emp group ...

  5. 4-安装workpress

    安装wordpress 软件下载 https://cn.wordpress.org/releases/ 在mysql数据库中创建wordpress数据库 mysql> create databa ...

  6. JAVA UUID 生成

    UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成UUID的API.UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址.纳秒级时间.芯 ...

  7. centos7的网络设置

    必备知识:linux下对文件的编辑操作 首先给出的是vi的基础  后面会有详细的远程连接Centos的方法 vi的基本概念 基本上vi可分为三种操作状态,分别是命令模式(Command mode).插 ...

  8. JS-- 浮点数运算处理

        一. 问题描述 最近在做一个项目,页面上会存在一些JS浮点数的运算,发现JS浮点数运算存在一些bug.譬如: 0.1+0.2 == 0.30000000000000004 0.1 + 0.7 ...

  9. C#基础---Queue(队列)的应用

       Queue队列,特性先进先出. 在一些项目中我们会遇到对一些数据的Check,如果数据不符合条件将会把不通过的信息返回到界面.但是对于有的数据可能会Check很多条件,如果一个数据一旦很多条件不 ...

  10. mybatis常见易出错

    在学习mybatis的过程中,发现了很多错误,这里记录一下,以供后来使用 1,config.xml文件中配置项的顺序: org.apache.ibatis.exceptions.Persistence ...