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))    }

今天时间不多,先简单记录到这,下次我们继续!

原创粉丝点击