写在前面:1,类型转换的两种方式

  2,as!和as?的用法

  3,类型判断中 is和===的用法

类型转换方式一,利用类型的构造器进行转换

  1. let str = ""
  2. var i = Int(str)
  3. if(i == nil){
  4. print("变量i为nil不能进行运算")
  5. }else{
  6. //由于变量i是一个可为空的变量,因此需要强制解封
  7. let rs = i! +
  8. print("变量i进行运算后的结果为\(rs)")
  9. }

类型转换方式二,使用as?和as!进行转换

  1. class A {
  2. func am(){
  3. print("am method")
  4. }
  5. }
  6. class B: A {
  7. func bm() {
  8. print("bm method")
  9. }
  10. }
  11. class C {
  12.  
  13. }
  14.  
  15. let ins: A = B()
  16. let insb1 = ins as? B
  17. let insb2 = ins as! B
  18.  
  19. //使用as?进行转换时,若转换失败则会返回nil
  20. if insb1 == nil {
  21. print("change failed..\(insb1)")
  22. }else{
  23. print("change success")
  24. insb1?.am()
  25. }

注意:使用as?进行转换时,若转换失败则会返回nil

  1. class A {
  2. func am(){
  3. print("am method")
  4. }
  5. }
  6. class B: A {
  7. func bm() {
  8. print("bm method")
  9. }
  10. }
  11. class C {
  12.  
  13. }
  14.  
  15. let ins: A = B()
  16. let insb1 = ins as? B
  17. let insb2 = ins as! B
  18.  
  19. if insb2 == nil {
  20. //这个分支将永远不会被执行
  21. print("change failed..\(insb2)")
  22. }else{
  23. print("change success")
  24. insb2.am()
  25. }

注意:使用as!进行转换时,要么转换成功,若失败程序将会产生异常

类型判断:is

  1. //判断的是两个对象的类型是否一致,因此下面代码if条件满足
  2. if ins is B {
  3. print("is b")
  4. }

类型判断:===

  1. //判断的是两个对象所引用的内存地址是否相同,因此下面代码无输出
  2. let ins3 = B()
  3. let ins4 = B()
  4. let ins5 = ins3
  5. if ins3 === ins4 {
  6. print("true...")
  7. }

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. Eos开发——构造查询条件

    1.ajax 方式 var data = { orgid :orgid,year:year ,month: month,type:type,sortField:'sellEmpname' ,sortO ...

  2. Sql基础

    SELECT 列名称 FROM 表名称 SELECT * FROM 表名称 SELECT DISTINCT Company FROM Orders 去重 SELECT 列名称 FROM 表名称 WHE ...

  3. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  4. Linux 入门之修改主机名

    vi /etc/hosts 修改 local.domain 为自己的主机名比如 compute

  5. [笔记]linux用户与用户组

    sudo useradd -m john 自动建立主目录 sudo passwd john sudo useradd -g groupusers mike sudo useradd -s /bin/b ...

  6. python安装后推荐的安装两款文本编辑器

    Notepad++ 7.2.2和 Sublime Text --道心 Notepad++ 7.2.2 Notepad++ 是一款非常有特色的编辑器,是开源软件,可以免费使用.支持的语言: C, C++ ...

  7. Visual Studio Emulator for Android 初体验

    Visual Studio Emulator for Android已经推出一段时间了,但一直没有用过.前两天下载安装用了下,整体感觉比谷歌自带的模拟器强多了.Visual Studio Emulat ...

  8. [游戏开发-学习笔记]菜鸟慢慢飞(九)- NGUI- UIWidget(官方说明翻译)

  9. 字符串编辑距离(Levenshtein距离)算法

    基本介绍 Levenshtein距离是一种计算两个字符串间的差异程度的字符串度量(string metric).我们可以认为Levenshtein距离就是从一个字符串修改到另一个字符串时,其中编辑单个 ...

  10. WinCE项目应用之车载导航

    WinCE车载导航系统是我过去几年投入精力比较多的一个项目.我的主要工作内容是BSP的移植.硬件模块的调试和WinCE系统的深度定制.如TDA7415驱动.TDA7415均衡器.慧翰车载蓝牙模块.华为 ...