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 = " ...
随机推荐
- ActionBar设置自定义setCustomView()留有空白的问题
先来看问题,当我使用ActionBar的时候,设置setCustomView时,会留有空白的处理 网上很多朋友说可以修改V7包到19,结果处理的效果也是不理想的. 下面贴出我觉得靠谱的处理代码 pub ...
- [Erlang 0128] Term sharing in Erlang/OTP 下篇
继续昨天的话题,昨天提到io:format对数据共享的间接影响,如果是下面两种情况恐怕更容易成为"坑", 呃,恰好我都遇到过; 如果是测试代码是下面这样,得到的结果会是怎样?猜! ...
- [Hadoop in Action] 第1章 Hadoop简介
编写可扩展.分布式的数据密集型程序和基础知识 理解Hadoop和MapReduce 编写和运行一个基本的MapReduce程序 1.什么是Hadoop Hadoop是一个开源的框架,可编写和运 ...
- PHP中的数据库一、MySQL优化策略综述
前些天看到一篇文章说到PHP的瓶颈很多情况下不在PHP自身,而在于数据库.我们都知道,PHP开发中,数据的增删改查是核心.为了提升PHP的运行效率,程序员不光需要写出逻辑清晰,效率很高的代码,还要能对 ...
- [css]全屏背景图片设置,django加载图片路径
<head><style type="text/css"> #bg { position:fixed; top:; left:; width:100%; h ...
- USACO . Greedy Gift Givers
Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts ...
- Java Web中的中文编码
Java Web开发中经常会遇到中文编码问题,那么为什么需要编码呢?因为人类需要表示的符号太多,无法用1个字节来表示,而计算机中存储信息最小单元为1个字节.所以必须指定char与byte之间的编码规则 ...
- JQuery中$.ajax()方法参数详解 及 async属性说明
url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...
- grub2配置显示系统选择菜单(ubuntu 14.04)
背景: 有一次遇到过安装的新的内核后,ubuntu并没有显示选择内核的grub菜单,按shift键才会弹出,有时候shift按得不准就又进入了不是想进入的那个系统. 配置方法: sudo vim /e ...
- Java泛型及实践
代码及说明: package com.zsm.crazyjava; import java.util.ArrayList; import java.util.Collection; import ja ...