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 = " ...
随机推荐
- Android 5.X新特性之RecyclerView基本解析及无限复用
说到RecyclerView,相信大家都不陌生,它是我们经典级ListView的升级版,升级后的RecyclerView展现了极大的灵活性.同时内部直接封装了ViewHolder,不用我们自己定义Vi ...
- gulp入门小记
由于我所在的项目组一直在用gulp构建工具,而我只是在前人搭好的环境下每次运行gulp packJs来打包js,对里面的东西全然不知,刚好最近有些时间就想自己从学学将gulp怎么用于构建前端项目中,这 ...
- SQL Server 自动化运维系列
本系列为SQL SERVER自动化运维的一些操作技巧点,所有内容都是根据日常运维过程中最经常遇到的问题,并为此形成了一些自动化运维的方式,皆为原创.... 供部分DBA和开发人员浏览借鉴,所应用平台基 ...
- x01.BSheepTree: 树
数据结构,无外乎三: 1. 一对一,线性表,数组是也: 2. 一对多,树,菜单是也: 3. 多对多,图,网络是也. 涉及到树,有一个平衡的问题,左旋转,右旋转,转得人晕晕乎乎.好在陈广的<数据结 ...
- 使用Servlet和JSP实现一个简单的Web聊天室系统
1 问题描述 利用Java EE相关技术实现一个简单的Web聊天室系统,具体要求如下. (1)编写一个登录 ...
- Favorites of top 10 rules for success
Dec. 31, 2015 Stayed up to last minute of 2015, 12:00am, watching a few of videos about top 10 rules ...
- Android Studio导入github下载的project和module
前言:我们以前eclispe时代, 经常都是跑到github浏览第三方开源资源,然后下载下来,运行一下sample之类的,学习没有接触的第三方安卓库,但是到了Android Studio,在githu ...
- Oracle插入日期格式出现 ORA-01843: not a valid month的解决办法
Oracle 在插入时间类型的时候如果不注意插入的格式就很容易出错,基本上只要转一下时间格式就可以解决. DateTime转成特定格式的字符串: var dateString = DateTime.N ...
- idea 插件的使用 进阶篇
CSDN 2016博客之星评选结果公布 [系列直播]零基础学习微信小程序! "我的2016"主题征文活动 博客的神秘功能 idea 插件的使用 进阶篇(个人收集 ...
- [LeetCode] Path Sum 二叉树的路径和
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...