<span style="font-size:18px;">兼具脚本语言,入门更加简单的语言 更加偏向人性化(英文)的编程语言 从2010年开始由克里斯负责开发,前期以GCC编译器为主,后期采用LLVM 6.0 OC诞生于1983年 Swift特点:兼容C Objective-C语言,安全高效并且交互性好,学习曲线平缓 可以不显示指定类型而编译器可以通过赋值来判断变量的类型.但是不支持隐式类型转换,即两种不同类型的变量之间不可以进行运算/赋值 Swift语言中没有main函数,语句后没有分号 * 如果想在一行里面有多个语句,那么需要用”;”进行分隔 输出函数为 println 与 NSLog 一样 自带换行 也可以用不自带换行的 print 语句 变量用var标识,常量用let标识 Swift对于空格敏感 Swift输出变量写法为\(变量/常量名) 在Swift中,整形自动推断为Int,如果系统是32位系统,那么这个整形就是Int32,如果是64位系统,那么就是Int64 如果需要特定的整形数,则需要手动写上类型指定(如:Int8) 在Swift中浮点型默认为double,如果想要float类型需要显示指定 在Swift中不支持隐式转换,如果想让两个不同类型的数据进行运算,那么需要显示的转换类型:类型名(常量/变量名) 变量名可以是汉字,符号等(只要是Unicode字符都可以) 在Swift中变量/常量名几乎支持所有的Unicode字符,除了数学符号,箭头和横线 字符串拼接可以直接用"+" "+"相当于C++中的运算符重载 元组:(概念来自关系型数据库) 数据库中的一条记录相当于一个元组,元组中的数据可以是不同类型 与结构体类似,但不需要事先定义类型 如:var request404Error = (404,"Request Error Message") 相当于定义了一个(Int, String)类型的元组 元组分解:可以用 .下标 来取 例如:request404Error.0 在元组定义中可以给出类型名称 如:var errorA = (errorCode:404 , errorMessage: "Request Error Message") 元组分解:此时可以用 .名称 来取 例如:errorA.errorCode 在Swift中对数组与字典也进行了重新定义 数组:Array是一个结构体 如:var names = ["张三", "李四", "王五"] 相当于:var names: String[] = ["张三", "李四", "王五"] 数组中的元素类型应该相同 添加元素用 .append() 如:names.append("赵六") *一次只能添加一个元素 也可用+ 将两个数组拼接到一起,类似于字符串拼接 如:names = names + name1 通过下标取数组元素 如:names[1] = "aaa" 通过 .removeAtIndex() 移除数组中的某个元素(按坐标) 如:names.removeAtIndex(0) 通过 .removeLast() 移除数组中的最后一个元素 如:names.removeLast() 通过 .removeAll() 移除数组中的所有元素 如:names.removeAll() 通过 .count 获取数组中元素的个数 如:names.count 不可变数组(用let修饰的)不能增删元素,但可以替换元素 tip:数组在定义时元素类型不一致,系统会默认该数组为NSArray 字典: 与OC不同,字典也用[]定义 如:var person = ["name":"张三", "sex":"男"] Swift规定所有的key为同一类型,所有的value为同一类型,key与value可以是不同类型 key的类型为可哈希的(即key的值不能相同) 取元素可用[key值] 如:person["name"] 添加一对键值可参照数组 如:person["age"] = "5" 修改value跟添加键值语法相同,与OC中的字典类似 更新字典中的key对应的value值也可以用 .updateValue(newValue, forKey:key) 如:person.updateValue("张三三", forKey:"name") 该方法有返回值:ValueType? (被替换掉的旧值) 该方法也可以添加一对键值,此时返回值为空 * 数组和字典的可变和不可变通过let和var判定,不可增删元素,但是数组可以修改已存在元素而字典不可以 数组的遍历用for 变量 in 数组名 {} 如:for name in names { } 既想知道下标,又想知道下标对应的元素的值可以用 for (index, 变量) in enumerate(数组名) { } * in 前面的是一个元组 如:for (index, name) in enumerate(names) { } 字典的遍历可以用 for (key, value) in 字典名 { } 依然用元组遍历 如: for (key, value) in person { } * 字典的打印是无序的 Swift中的Bool有两个值:true和false 分支语句: Swift中的分支语句的条件只能是Bool类型 如: var isNumber: Bool = true if isNumber { } 或: var aNumber = 3 if aNumber > 100 { } switch 语法: switch 变量 { case 条件:语句 default:语句 } 默认没有break,但是case中系统自带break 如: switch i { case 1:println("lololololololo") default:println("aaaaaaa") } 如果想要执行下个case语句,需加上fallthrough语句 进阶功能: case语句的条件还可以是一个范围,并且范围可以交叉 用 值..值 或 值…值 来构建一个区间 where是一个二次判断语句,即在满足第一个条件的同时满足where之后的条件才能使整个条件为真 case的条件也可以是一个元组,即swith后面的变量/常量可以是一个元组 如: var point = (3,4) switch point { case (0, 0): println("原点") case (_, 0): println("X轴") case (0, _): println("Y轴") default: println("象限内") } “_” 表示忽略元组里相应位置的元素 也可以将 “_”替换为变量/常量,即可取出元组中对应位置的元素 如果同时满足多个case,除非case中含有fallthrough语句,否则只执行第一条语句 循环语句: 语法: for 初值; 条件; 增量 { } 如: for var i = 0 ; i < 10 ; i++ { } 也可以写成: for 循环增量 in 范围 { } 如: for j in 0..9 { } 包括左边的值,不包括右边的值 for j in 0...9 { } 左右的值都包括 while语句 语法: while 条件 { } 如: var i = 0 while i<10 { i++ } </span>