swift3.1 快速上手系列(一)
来源:互联网 发布:苹果mac装win7系统 编辑:程序博客网 时间:2024/05/08 00:24
swift 作为 IOS 开发的下一个主流语言(实际上目前的排行早已超过Objective-C),为 IOS 注入了新生命。但也不得不感慨其变化莫测,要跟上它的步伐,就得保持积极学习的态度,该系列会将自己总结的 swift 相关的比较重要而又比较独特的知识点和注意点与大家分享!
在 Xcode 8 的到来后,第三方插件的使用遭遇了阻碍,例如大牛王巍写的 VVDocument,但是苹果官网提供了可供使用的文档注释,可在函数头直接快捷键:cmd+option+/,便可立即生成函数文档注释,方便快捷。
除此之外,swift3.1 还提供了非常便捷的颜色选择快捷键:color+回车,弹出一个颜色选择框,可自由选择颜色。
在需要加入代码标注(方便下次修改)的区域时,可使用://TODO:或者 //FIXME:
swift是强类型语言,不允许不同类型的数据的直接计算;
swift中不存在基本数据类型,都是结构体;
swift开发中,极少使用直接指定类型,通常都是自动推导;
在开发中,通常先使用let,在需要变化时,再改成var;
注意点:?一般用于定义,!解包准备计算。var的可选值默认为nil,let的可选值没有默认值。
强行解包:从可选值中获取对应的非空值,如果真的是nil,程序就会崩溃!程序员必须为每一个!负责,当然程序中应该少用!。由此,也就衍生出了几种对可选值的判断方式:
1. if 判断
这种方法会带来很多大括号,会使程序可读性和执行效率变低,一般不采用该方法。
func demo(x:Int?,y:Int?) { if x != nil && y != nil { print(x! + y!) }else{ print("x或y为nil") } }
补充一点:??是一个简单的三木运算符,如果有值,则使用值,如果没有值,使用??后面的值替代,??操作符号的优先级较低,在使用的时候,最好加上括号。
func demo1(x:Int?,y:Int?) { print((x ?? 0) + (y ?? 0)) }
2. if let 连用
判断对象的值是否为nil, {} 内一定有值,可以直接使用,不需要解包。
func demo2(){ let oldName:String? = "飞哥" let oldAge:Int? = 23 if let name = oldName,let age = oldAge { print(name + String(age)) }else{ print("name或age为nil") } }
3. guard let
func demo3() { let oldName:String? = "飞哥" let oldAge:Int? = 23 // guard let 守护一定有值,如果没有直接返回 guard let name = oldName, let age = oldAge else { print("name或age为nil") return } // 代码执行至此,anme和age一定有值! // 通常判断是否有值之后,会做具体的逻辑实现,通常代码多! // 如果用 if let 凭空多了一层分支,guard 是降低分支层次的办法 // guard 的语法是swift2.0推出 print(name + String(age)) }
今天时间不多,先简单记录到这,下次我们继续!
- swift3.1 快速上手系列(一)
- swift3.1 快速上手系列(三)
- Python快速上手(一)
- Django 快速上手(一)
- swift 3.1 快速上手系列(二)
- Hadoop快速上手系列(一)Hadoop部署,安装和配置
- SVN快速上手(一)安装
- ExtAspNet控件库快速上手(一)
- F# 20分钟快速上手(一)
- 快速上手RaphaelJS--RaphaelJS_Starter翻译(一)
- Bootstrap快速上手(一)----右键菜单
- UnityShader快速上手指南(一)
- AngularJS2.0教程(一)快速上手
- AngularJS2.0教程(一)快速上手
- UE4(一)快速上手入门学习
- 快速上手Maven(一)
- Spring Boot 快速上手(一)快速搭建
- 快速上手写spark代码系列03:开始写一个spark小脚本(1)
- [spring-boot] thymeleaf 热交换
- css笔记:HTML文档中应用css样式的方法总结
- PostgreSQL模糊匹配走索引
- 卡特兰数
- AndroidStudio中mipmap目录和drawable目录有什么区别
- swift3.1 快速上手系列(一)
- Linux 学习(六)--- 文件权限的操作
- (13) FFMPEG结构体分析:AVFormatContext
- (158)材质编辑器UI
- js的模块化机制
- Binder系统源码分析概要总结
- 百度-JAVA后台开发-一面
- ?android:attr/属性 与 ?android:属性
- 剑指offer 面试题26 复杂链表的复制