(1)因为nil这个东西,swift中没有就是没有。  Int? 叫 整型可选型,如果不提前声明,直接赋值变量 nil会报错 。
可以将Int赋值给Int?   ,但是不能将Int?赋值给Int 。

(2)不能将 普通 String 和可选型直接一起混用,必须 Unwrap 。也就是这样 在某个可选型变量后面加个!
表示担保它一定不为nil  。这个 叫 强制解包 , 是有风险的。

(3)swift提供了一种语法用来解包 ,let 也可以用var
 if let errorCode = errorCode {
    仅在这里面可以使用解包后的errorCode ,此时不需要加!
    但是出了花括号 ,errorCode又是可选型了。这是因为swift是严格的类型语言。
}

if let 这里可以用逗号隔开,对多个可选型进行解包 ,这里还可以用where关键字判断是否为某个值{

(4)隐式解析可选:

非Optional的变量必须在声明时或者构造器中进行初始化,但是如果想在viewDidLoad中初始化,所以只能声明Optional:var myLabel: UILabel? ,虽然我们确定在viewDidLoad 中初始化,并且在ViewController的生命周期内不会置为nil, 但是对myLabel操作时,每次依然要加上!来强制拆包

myLabel!.text = "text"

myLabel!.frame = CGRectMake(0,0,10,10)

对于这种类型的值,我们可以直接这么声明 var myLabel: UILabel!,这种是特殊的Optional,称为Implicitly Unwrapped Optionals, 直译就是隐式拆包的Optional,就等于说你每次对这种类型的值操作时,都会自动在操作前补上一个!进行拆包

(5)Swift 的nil和 Objective-C 中的nil并不一样。在 Objective-C 中,nil是一个指向不存在对象的指针。在 Swift 中,nil不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选都可以被设置为nil,不只是对象类型。

转载于:https://www.cnblogs.com/liuw-flexi/p/6866045.html

swift中为什么要创造出可选型?相关推荐

  1. Swift中键盘的弹出隐藏,页面抬高,Return键等的配置

    目录 1.点击键盘外的区域时键盘隐藏 2.点击输入框时抬高整体页面,防止输入框被键盘遮挡 两个function的添加 viewDidLoad中添加代码 3.Return键的配置 先为class添加UI ...

  2. Swift 中 throws 异常抛出

    一.异常抛出关键 throws 定义在函数结尾 如果函数有返回值 定义在 返回类型前如 : func throwDeliver(num:Int) throws ->String 二.定义方法 / ...

  3. 光子计算机科学家,科学家从真空中创造出光子

    腾讯科学讯 据美国物理学家组织网报道,瑞典查尔姆斯理工大学的科学家在真空中捕获到了不断出现和消失的光子,成功将虚拟光子转变成真实光子,制成了可测量的光,首次观测到40多年前就曾被预言的动力学卡西米尔效 ...

  4. 探索 Swift 中的 MVC-N 模式

    作者:Marcus Zarra(twitter:@mzarra) Marcus 将会为大家介绍一种设计模式,他曾经在那些需要从互联网进行大量频繁数据请求的 iOS 应用当中使用此设计模式.这个设计采用 ...

  5. 怎样在swift中创建CocoaPods

    本文由yake_099(博客)翻译自raywenderlich,作者:Joshua Greene 原文:How to Create CocoaPods with Swift 你可能对一些比较著名的开源 ...

  6. Swift中编写单例的正确方式

    本文由CocoaChina译者leon(社区ID)翻译自krakendev 原文:THE RIGHT WAY TO WRITE A SINGLETON 转载请保持所有内容和链接的完整性. 在之前的帖子 ...

  7. Swift中依赖注入的解耦策略

    原文地址:Dependency Injection Strategies in Swift 简书地址:Swift中依赖注入的解耦策略 今天我们将深入研究Swift中的依赖注入,这是软件开发中最重要的技 ...

  8. swift设置启动图不现实_如何通过装饰房屋来开始在Swift中使用增强现实

    swift设置启动图不现实 by Ranadhir Dey 由Ranadhir Dey 如何通过装饰房屋来开始在Swift中使用增强现实 (How to get started with augmen ...

  9. swift视图容器_如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图...

    swift视图容器 by Lee Dowthwaite 通过李道思韦特 如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图 (How to create a beautif ...

最新文章

  1. Ubuntu使用ssh公钥实现免密码登录
  2. python基础学习[python编程从入门到实践读书笔记(连载六)]:数据可视化项目第17章
  3. vue3.0中使用Element-plus默认英文组件修改为中文
  4. asp.net学习之SqlDataSource 1 select的四种参数赋予形式的解释
  5. 排序算法的总结——Java实现
  6. 【MyBatis】MyBatis Order By 字段动态动态排序
  7. jquery请求后台数据(get请求)
  8. 黑马博客——详细步骤(七)项目功能的实现之文章管理
  9. 徒手撸框架--高并发环境下的请求合并
  10. 1000以内的回文数_杭城有学校带学生玩扑克、数糖果... “云课堂”下的数学很有趣!这些数学游戏,居家玩起来~...
  11. STM32驱动LCD1602,哪位同学需要的,来了
  12. 《SAP从入门到精通》——导读
  13. 幻方矩阵(魔方矩阵)
  14. 无线通信原理与应用笔记
  15. Hspice中的测量语句(II)
  16. 天才小毒妃 第917章 深藏不露大财主
  17. 移动端 touch事件
  18. [R语言] 生成随机数
  19. java vardump_Java内存查看与分析
  20. Java石头剪刀布(简单小游戏)

热门文章

  1. 【知乎摘要】女生婚前应该清楚男友哪些方面了才能嫁给他
  2. Android基础知识大纲
  3. 雷林鹏分享:codeigniter框架文件上传处理
  4. Linux命令之useradd和userdel(添加、删除用户)
  5. CodeVS 1044 拦截导弹(DP)
  6. POLYCOM RMX2000 激活与初始化 信令板卡初始化
  7. 解决 IE8下 vs2008 无法调试
  8. Diango博客--16.稳定易用的 Django 分页库,完善分页功能(二)
  9. cesium html源码,Cesium源码的本地运行及调试
  10. kafka 日志相关配置