基础

英文教程

中文教程

简单记录一下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//变量 类型用冒号声明,加?表示可选类型(可空(nil)),加!表示隐式解析可选类型(不可空),或者不写类型,会自动推断,使用时加!强制解析(forced unwrapping)
var myVariable: String? = "An optional string."
var assumedString: String! = "An implicitly unwrapped optional string."
var forcedString: String = myVariable!
var forcedString: String = assumedString

//常量
let myConstant = 11

//数组
let emptyArray = Int[]()

var numList = [1, 2, 3]
for item in numList {
    if item = 1 {
        print(item)
    }
}

//字典
let emptyDictionary = Dictionary<String, Int>()

let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
    print("\(animalName)s have \(legCount) legs")
}

//构造函数
init(){}

var text: String
init(text: String) {
    self.text = text
}

//析构
//实例释放之前被自动调用  
//子类继承了父类的析构器,并且在子类析构器实现的最后,父类的析构器会被自动调用。即使子类没有提供自己的析构器,父类的析构器也同样会被调用  
//通常你不需要使用deinit,当你的实例化对象不在使用时,系统会自动帮你管理内存,但一些自定义的情况会涉及自己手动deinit  
deinit {}

//接口 关键字 protocol

//区间
let num = 1...3 //1,2,3
let num = 1..<3 //1,2
numList[...2]//从开头到索引2 或 2... 从索引2到结尾

//int 有无符号类型 UInt8 范围是 0到255,2的8次方,还有 UInt32 UInt64 ,UInt 在32位平台上和 UInt32 长度相同,在64位平台上和 UInt64 长度相同
let minValue = UInt8.min  // minValue 为 0,是 UInt8 类型
let maxValue = UInt8.max  // maxValue 为 255,是 UInt8 类型

//Double 表示64位浮点数 Float 表示32位浮点数
//Double 精确度很高,至少有 15 位小数,而 Float 只有 6 位小数

//Bool 布尔值

//类型转换
let three = 3
let pointOneFourOneFiveNine = 0.14159
let pi = Double(three) + pointOneFourOneFiveNine
let integerPi = Int(pi)

//元组(tuples) 把多个值组合成一个复合值
//类型和元素命名依情况可省略,简单的写是这样 let http404Error = (404, "Not Found")
let http404Error: (Int, String) = (code: 404,msg: "Not Found") 
let (statusCode, statusMessage) = http404Error
//如果只想要一个 另一个可以用下划线代替
let (justTheStatusCode, _) = http404Error
//直接访问
let code = http404Error.0
let msg = http404Error.1
//有命名时
let code = http404Error.code
print("The status code is \(statusCode)") //输出 The status code is 404 没有 \() 则 The status code is (404),\() 类似 kotli n里的 $

//可选类型 optionals 以下两种声明是相等的
var optionalInteger: Int?
var optionalInteger: Optional<Int>

//nil 表示没有值 在 Objective-C 中,nil 是一个指向不存在对象的指针。在 Swift 中,nil 不是指针——它是一个确定的值,用来表示值缺失

//空合运算符
a ?? b 等于 a != nil ? a! : b
//结构体(struct)是值类型 类是引用类型

//self 表示当前对象或实例,类似 java 的 this

//方法用 func 声明