前言:
1.此文中的语法会根据Swift的升级变动而更新。
2.如果需要请移步 -> swift2.2 语法(中)、swift 2.2语法(下)
Swift与OC中常见的区别
- 导入框架
定义标识符
- ";"号的使用
- OC:每个语句后都必须加上;以示结尾
- Swift:
1.如果在一行中只有一条语句,那么语句结束时 ";" 号可以省略
2.如果一行中有多条,那么需要以 ";" 进行分割
常量和变量
- 在定义一个标识符时,必须明确告诉编译器这个标识符是变量还是常量
- 常量,需要在定义最前面加上 'let',定义后不可修改
- 变量,需要在定义最前面加上 'var',定义后可以修改
- 格式:let/var 标识符名称 : 类型 = 10;
import UIKit
// 定义一个常量
let a : Int = 0 // 或 let a = 0
// 因为常量不可修改,所以 a = 1 的是错误的写法
// 定义一个变量
var b : Int = 0 // 或 var b = 0
// 因为变量可以修改,所以来修改下变量
b = 1
- 常量使用注意
- 在开发中优先使用常量,只有发现该标识符需要修改时,再改成变量(保证数据更加安全)
- 常量本质:指向的内存地址不可修改,但通过内存地址找到对应的对象,就可以修改对象内部属性
// 创建一个常量指向UIView并修改内部属性
let view : UIView = UIView()
// 设置尺寸
view.frame = CGRectMake(0, 0, 150, 150)
// 设置背景颜色
= UIColor.greenColor()
// 定义一个常量保存尺寸信息
let rect = CGRectMake(0, 0, 150, 150)
// 定义一个变量指向UIView并切换到UIButton
var tempView : UIView = UIView(frame: rect)
// 设置背景颜色
tempView.backgroundColor = UIColor.redColor()
// 切换变量指向的View
tempView = UIButton(type: .Custom)
swift中数据类型
- 介绍
- Swift中的数据类型也有:整型/浮点型/对象类型/结构体类型等
- 整型
- 有符号
- Int8 : 有符号8位整型
- Int16 : 有符号16位整型
- Int32 : 有符号32位整型
- Int64 : 有符号64位整型
- Int : 和平台相关(默认,相当于OC的NSInteger)
- 无符号
- UInt8 : 无符号8位整型
- UInt16 : 无符号16位整型
- UInt32 : 无符号32位整型
- UInt64 : 无符号64位整型
- UInt : 和平台相关(常用,相当于OC的NSUInteger)(默认)
- 浮点型
- Float : 32位浮点型
- Double : 64浮点型(默认)
类型推导
- Swift是强类型语言
- Swift中任何一个标识符都有明确的类型
- 注意:
- Swift中在定义一个标识符时,有直接给该标识符进行赋值,那么标识符后面的类型可以省略(因为类型推导会自动根据后面赋值的类型推导出前面标识符的类型)
- 在Swift中可以通过option + 鼠标左键,可以查看某个标识符的类型
// 定义一个Int类型的常量
let a : Int = 15
// 因为有类型推导的特性,所以上面的语句可以简写为
let a = 15 // 编译器会自动根据右边值得类型判定数据类型
// 定义一个浮点类型的常量
let b : Double = 3.14
// 因为有类型推导的特性,所以上面的语句可以简写为
let b = 3.14 // 因为右边是浮点型数据,所以编译器会判定常量类型为浮点型
基本运算
- 在Swift中,不同类型的数据类型之间不能进行运算(因为Swift中没有隐式转换)
- 如果数据类型不一致,就需要转化数据类型,使类型一致
// 相同类型运算
let a = 15
let b = 20
// 求和
let sum = a + b
// 不同类型运算
let a = 30.0
let b = 15
// 转换类型
let tempA = Int(a)
// 求和
let sum = tempA + b
判断分支
- 介绍
- 判断分支指if/switch/三目运算符等判断语句
- 通过判断分支可以控制程序的执行顺序
- if判断
- 三目运算符(和OC一样,没有别的区别)
let a = 15
let b = 20
var result = a > b ? a : b
print(result)
- guard(守卫)使用
- guard是Swift2.0新增的语法
- 它与if语句非常类似,设计的目的是提高程序的可读性
- guard语句必须跟上else,{}内必须跟上break/continue/return
/* 假设成绩为100分,60以下为不及格 */
// 定义一个常量
let a = 99
// 定义一个test函数,参数Int类型
func test(a : Int) {
guard a >= 60 else {
print("不及格")
return
}
print("优秀")
}
// 调用函数
test(a)
- switch判断
- 介绍
- 苹果对Switch进行了大大的增强,使其拥有其他语言没有的特性
- 使用
- 基本用法和OC一样
- switch后面的()可以省略
- case后的break可以省略(默认会自动填补break)
let a = 0
switch a {
case 0 :
print("真")
case 1 :
print("假")
default :
print("其它")
}
- 一个case判断中,可以判断多个值(值之间用 “,” 分隔)
let a = 0
switch a {
case 0, 1 :
print("真假")
default :
print("其它")
}
- 如果希望出现case穿透,可以使用关键字fallthrough
let a = 0
switch a {
case 0 :
fallthrough
case 1 :
print("假")
default :
print("其它")
}