(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,不只是对象类型。

最新文章

  1. struts2回显指定的错误信息
  2. Gym 100500B
  3. iOS多线程邂逅
  4. ansible 的组件inventory
  5. Linux/Unix System Level Attack、Privilege Escalation(undone)
  6. 安装memcached服务器和PHP中添加memcache拓展模块
  7. Linux 硬盘分区
  8. vi--文本编辑常用快捷键之复制-粘贴-替换-删除
  9. Kth Ancestor 第k个祖先问题
  10. mysql grant 示例
  11. log4jdbc与logback集合打印日志过多的解决
  12. python3.4 伪装成浏览器获取页面信息失败
  13. Android高斯模糊
  14. PRINCE2的好处是什么?使用PRINCE2受益非浅
  15. Go - method
  16. 《java入门第一季》之泛型方法和泛型接口
  17. 获取input Date日期 时间,并得到前一天的Date值
  18. AES CBC PKCS7 C# C++
  19. React项目中使用HighCharts
  20. edis配置文件-转

热门文章

  1. Vue实现音乐播放器(六):jsonp的应用+抓取轮播图数据
  2. MongoDB 基本命令备忘
  3. Selenium WebDriver 数据驱动测试框架
  4. <每日一题> Day1:CodeForces.1140D.MinimumTriangulation(思维题)
  5. ajax传文件用express的multer接住
  6. WOJ#3882 旅行问题(POI2004)
  7. jenkins使用记录转自https://my.oschina.net/sanpeterguo/blog/197931
  8. sql server 中 like 中文不匹配问题
  9. TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
  10. Dorado环境启动出错Spring加载不到资源Bean配置 at org.springframework.asm.ClassReader.<init>(Unknown Source)