简介
Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序
2014 年,在 Apple WWDC 发布
历史
2010 年 7 月,苹果开发者工具部门总监 Chris Lattner
开始着手 Swift 编程语言的设计工作
用一年时间,完成基本架构
Swift 大约历经 4 年的开发期,2014 年 6 月发表
克里斯·拉特纳
何许人?
LLVM 项目的主要发起人与作者之一
Clang 编译器的作者
苹果公司『开发者工具』部门的主管
领导Xcode、Instruments等编译器团队
Swift的大部分基础架构均由他1人完成
特点
从它的语法中能看到Objective-C、JavaScript、C#、Python等语言的影子
语法简单、代码简洁、使用方便
可与Objective-C混合使用(相互调用)
提供了类似 Java 的名字空间(namespace)、泛型(generic)、运算对象重载(operator overloading)
为什么设计Swift语言
让应用开发更简单、更快、更稳定
确保最终应用有着更好的质量
Swift初体验
Playground是什么?
从Xcode6开始出现(Swift开始出现)
翻译为:操场/游乐场
对于学习Swift基本语法非常方便
所见即所得(快速查看结果)
语法特性发生改变时,可以快速查看.
一.Swift最基本的语法变化
1.导入框架
OC: #import <UIKit/UIKit.h>
Swift: import UIKit
2.定义标识符
OC: int a = 20;
Swift: let a : Int = 20 == let a = 20
定义标识符格式: let / var 标识符 : 数据类型 = 赋值
注意:let声明的是常量,不可以对常量重新赋值
Swift中定义标识符,必须声明该标识符是变量(var)还是常量(let)
注意:在swift中如果一行代码中只有一条语句,那么语句后面的 ;(分号) 可以省略
一行内有多条语句 ; 不可以省略, 不建议一行写多条语句
3.Swift中的打印
OC:NSLog(@"Hello world”); / NSLog(@"%d", a);
Swift中字符串不需要@
print(a) / print("hello world")
二.常量&变量
1.什么是常量和变量?
在Swift中规定:在定义一个标识符时,必须明确说明该标识符是常量还是变量
使用let来定义常量,定义之后,不能进行修改
使用var来定义变量,定义之后,可以进行修改
2.常量个变量的使用注意
在使用中,建议先使用常量,这样更安全,防止不小心修改之前的值
如果需要修改时,再把常量修改为变量
注意:常量的本质是,指向的内存地址不能修改,但可以找到内存地址对应的对象,修改对象内部的属性
let view : UIView = UIView()
view.alpha = 0.5
view.backgroundColor = UIColor.orangeColor()
三.类型推导
1.什么是类型推导?
在Swift中,如果在定义标识符的同时直接对其进行赋值,那么系统会自动根据赋的值的数据类型,推导出标识符的类型
如果定义标识符的同时直接赋值,那么标识符后面的数据类型可以省略
可以通过option + 鼠标左键来查看标识符的类型
let n = 3.14
let View = UIView()
四.Swift中的基本运算
1.swift中在进行基本运算时,必须保证两个参与运算的值得数据类型一致,否则会报错
因为swift中没有隐式转换
let m = 20
let n = 3.44
// let result = m + n 错误写法
2.数据类型的转化
将Int 转换为 Double Double(m)
将Double 转换为 Int Int(n)
let a : Double = 2.44
let b : CGFloat = 4.55
let result1 = a + Double(b)
五.逻辑分支
1.什么是逻辑分支?
分支就是if / witch / 三目运算符 等判断语句
通过分支语句可以控制程序的执行流程
2.if分支语句
OC中if的写法 : BOOL –> YES/NO
int a = 20
if (a > 0) {
NSLog(@"a大于0")
}
if (a) {
NSLog(@"a不等于0")
}
Swift和OC的差异
1> if后面的()可以省略掉
2> swift中没有非0(nil)即真 Bool –> true/false
let a = 20
if a > 0 {
print("a大于0")
} else {
print("a不大于0")
}
3.三目运算符
swift中的三目运算符合OC没什么差别
let result = m > n ? m : n
4.guard的使用
4.1 guard是Swift2.0新增的语法
4.2 它与if语句非常类似,它设计的目的是提高程序的可读性
4.3 guard语句必须带有else语句,它的语法如下:
4.3.1当条件表达式为true时候跳过else语句中的内容,执行语句组内容
4.3.2条件表达式为false时候执行else语句中的内容,跳转语句一般是return、break、continue和throw
func online( age : Int , IDCard : Bool , money : Int) {
guard age >= 18 else {
print("回家叫家长")
return
}
guard IDCard == true else {
print("回家拿身份证")
return
}
guard money >= 5 else {
print("回家拿钱")
return
}
print("留下来上网")
}
online(19, IDCard: true, money: 4)
5.switch分支
5.1苹果在swift中对swift中对switch进行了很大的加强
5.2 Swift中switch和OC中switch的差异
switch中后面的()可以省略
case结束之后可以不加break,也不会产生case穿透
补充:如果希望产生case穿透,需要在语句结束之后加上fallthrough
在swift中switch的case后面可以跟上多个条件, 并且多个条件以 , 分割
switch sex {
case 0, 1:
print("正常")
default:
print("非正常人")
}
5.3 swift支持多种数据类型判断
浮点型switch判断
switch m {case 3.14: print("m是π")default: print("m非π")
}
字符串switch判断
switch opration {
case "+":
result = a + b
case "-":
result = a - b
case "*":
result = a * b
case "/":
result = a / b
default:
print("非法操作")
}
判断区间类型
什么是区间?
通常我们指的是数字区间:010,100200
swift中的区间常见有两种
半开半闭区间:0..<10 表示:0~9,不包括10
闭区间:0…10 表示:0~10
let score = 92
switch score {
case 0..<60:
print("不及格")
case 60..<80:
print("及格")
case 80..<90:
print("良好")
case 90...100:
print("优秀")
default:
print("不合理分数")
}