Swift的整理(1)

随着swift的应用越来越多,越来越成熟,又开启了一段新的学习旅程,不过也是必然的, 从苹果推广swift的决心就能看出,那现在就整理一下Swift的笔记.

以下是一些swift学习资源的网址,现分享给大家!

* 苹果官方博客 https://developer.apple.com/swift/blog/

* 开源github https://github.com/apple/swift

* 苹果官方 Swift 2.0 电子书 https://itunes.apple.com/us/book/id1002622538

* 2.0 中文版 http://wiki.jikexueyuan.com/project/swift/

* Let's Swift  http://letsswift.com/

* 100个Swift必备tips,作者王巍,建议购买实体书 http://onevcat.com

一.Swift与OC的不同

1.在 Swift 中没有了 main.m,@UIApplicationMain 是程序入口

2.在 Swift 中只有 .swift 文件,没有 .h/.m 文件的区分

3.在 Swift 中,一个类就是用一对 {} 括起的,没有 @implementation 和 @end

4.每个语句的末尾没有分号,在其他语言中,分号是用来区分不同语句的

5.在 Swift 中,一般都是一行一句代码,因此不用使用分号

二.与 OC 的语法快速对比

1.在 OC 中 alloc / init 对应 ()

2.在 OC 中 alloc / initWithXXX 对应 (XXX: )

3.在 OC 中的类函数调用,在 Swift 中,直接使用 .

4.在 Swift 中,绝大多数可以省略 self.,建议一般不写,可以提高对语境的理解(闭包时会体会到)

5.在 OC 中的 枚举类型使用 UIButtonTypeContactAdd,而 Swift 中分开了,操作热键:回车 -> 向右 -> .

6.Swift 中,枚举类型的前缀可以省略,如:.ContactAdd,但是:很多时候没有智能提示

7.监听方法,直接使用字符串引起

8.在 Swift 中使用 print() 替代 OC 中的 NSLog

三.Swift的基本使用

3.1 常量和变量

let 定义常量,一经赋值不允许再修改

var 定义变量,赋值之后仍然可以修改

注意:1.应该尽量先选择常量,只有在必须修改时,才需要修改为 var

2.在 Xcode 7.0 中,如果没有修改变量,Xcode 会提示修改为 let

自动推导: Swift中程序可以通过等号右边的值准确的推导出等号左边常量或者变量的数据类型  快捷键 option + 鼠标左键

通常在开发时,不需要指定变量的类型

如果要指定变量,可以在变量名后使用:,然后跟上变量的类型

wift 对数据类型要求异常严格

 Swift中没有隐式转换  需要程序员自己改变常量或者变量的类型

3.2 可选项Optional

定义变量时,如果指定是可选的,表示该变量可以有一个指定类型的值,也可以是 nil

定义变量时,在类型后面添加一个 ?,表示该变量是可选的

变量可选项的默认值是 nil

常量可选项没有默认值,主要用于在构造函数中给常量设置初始数值

 可选项不能直接参与运算

 解决方法:

01 使用‘!’ 强行解包(程序员向系统保证我的可选项一定有值 肯定不为nil)

fatal error: unexpectedly found nil while unwrapping an Optional value

 缺点: 如果我们对一个可选项进行解包的时候如果该可选项为nil 的 会造成程序崩溃

02 使用‘??’ 运算符

?? 运算符可以用于判断 变量/常量 的数值是否是 nil,如果是则使用后面的值替代

在使用 Swift 开发时,?? 能够简化代码的编写

- 使用场景举例

- sex 男 0  女 1  人妖 nil 泰国

- sex 男 0  女 1  太监 nil 清朝

- 开发中

-后台 头像 url  第一次登陆 nil  如果不为nil

代码实现:

func demo1(){

var a:Int? //= 5

print(a)

// 定义一个常量 而且是必选项

// 完成a + b 操作

let b = 10

// 方式01 强行解包

//let result = a! + b

// 方式02 ?? 运算符  格式: (可选值 ?? 程序员自己设置的默认值)

let result = (a ?? 0) + b

print(result)

}

3.3 控制流

if:Swift 中没有 C 语言中的非零即真概念;在逻辑判断时必须显示地指明具体的判断条件 true / false;if 语句条件的 () 可以省略,但是 {} 不能省略

三目:Swift 中的 三目 运算保持了和 OC 一致的风格

可选项:由于可选项的内容可能为 nil,而一旦为 nil 则不允许参与计算,因此在实际开发中,经常需要判断可选项的内容是否为 nil

if let :不能与使用 &&、|| 等条件判断,如果要增加条件,可以使用 where 子句,注意:where 子句没有智能提示

if let :是用来判断一个属性是否为空

代码实现:

// 多个可选项判断

func demo3(){

// 名字

let name: String? = "老王"

// 年龄

let age: Int? = 18

// 使用if-let判断

if let n = name, let a = age {

print(n,a)

}

}

guard:guard 是与 if let 相反的语法,Swift 2.0 推出的.使用 guard 的好处:能够判断每一个值;在真正的代码逻辑部分,省略了一层嵌套

switch:switch 不再局限于整数;switch 可以针对任意数据类型进行判断;不再需要 break;每一个 case后面必须有可以执行的语句;要保证处理所有可能的情况,不然编译器直接报错,不处理的条件可以放在 default 分支中;每一个 case 中定义的变量仅在当前 case 中有效,而 OC 中需要使用 {};switch 中同样能够赋值和使用 where 子句

switch代码实现:

func demo1(){

let name = "良"

switch name {

case "优":

let n = "老王"

print("90-100分")

case "良":

print("80-90分")

case "中":

print("60-80分")

case "差":

print("0-60分")

default:

print("其他")

}

}

参考文章网址: http://www.jianshu.com/p/5601457ab4ac

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容