1.基础1.1)Swift仍然使用//和/**/进行注释,而/**/允许多行注释。1.2)Swift使用print和println进行打印,其参数传递是泛型,几乎所有类型都是可打印的。1.3)swift是否在语句后加分号是正确的,但swift的首选风格是不在末尾加分号。如果有多个语句,则必须用分号分隔。1.4)数字中的下划线(_)会被忽略,方便识别数值大的数字,也可以在前面补零。1.5)Swift不允许不同类型之间的加减乘除,必须先进行类型转换或运算1.6)typealias可以为一个类型指定另外一个名字,这样可以清楚地表达类型的含义。typealiasnewType=OldTypeName1.7)assert断言抛出异常,assert第一个参数表示通过,不抛出异常条件,第二个参数表示提示,第二个参数可以没有1.8)=赋值运算符inswift是没有返回值的,所以不会出现ifa=3{}这样的错误,运算符前后加空格,为了不被xcode识别2.变量2.1)let定义常量,var定义变量,letdefine声明时必须指定初值,普通的var声明也必须赋初值。2.2)let声明的变量不能改变,var变量可以再次改变,但是不能再声明一个已经声明过的常量或变量。2.3)可以在一行中同时声明多个常量或变量,以逗号分隔;如果每个常量对应一个var或者let,就用分号隔开即可。2.4)每个常量和变量必须有一个固定的类型。如果没有指定类型,swift将根据后面的赋值类型进行推断。2.5)Swift名字不能使用保留字和箭头/初学者数字,没有其他规则,甚至小狗和猫都可以用来命名。2.6)如果要用关键字来命名,是不允许的,但是可以在名字前后加``,比如`let`,non关键字加``也是可以的。2.7)可以在swift中声明一个元组,类型类似于(Int,String),可以用var声明或者let声明,都将是变量或者常量2.8)和元组的方式不多不同于直接分别声明两个变量和常量。您可以取出变量并单独使用它们,也可以将它们作为元组使用,也可以将它们混合使用。2.9)可以使用元组名直接通过下标索引来直接访问元组中对应的值,比比如aaa.0aaa.12.10)可以给元组中的元素命名,比如(code:404,message:"NotFound"),然后就可以使用aaa.code和aaa.message来访问了3.类型3.1)int类型的UInt8和Int32都可以通过min和max得到最大值和最小值。类型3.3)整数值可以赋给指定为浮点型的常量或变量,但不能是整型变量,它会自动转换为浮点数。3.4)显示指定类型的变量或常量不能赋值给不同的类型,不能自动转换,除非给浮点类型赋整数值3.5)添加一个?在指定类型之后表示一个可选类型,这意味着它可能没有nil值,然后你可以通过可选绑定3.6)如果它是一个可选类型的类,你可以通过?访问它的属性和方法。.就是通过前者是否会响应后一个方法,如果能响应就执行。如果不是,则返回nil3.7)?它其实是一种语法糖,比如String?type相当于Optional类型,只是写起来方便而已,本质上和String类型不同3.8)如果不想使用判断是否为空使用optionalbinding还是使用.?要访问它,您可以使用最直接和最简单的!强制拆包使用,但前提是可以保证非空3.9)如果一个可选值没有值,强制拆包会报错,一个可选类型会被隐式赋值nil,你也可以赋值nil在use3.10)之所以需要可选类型是因为swift是一种类型安全的语言,它要求你要有值,但是这个可选类型太麻烦了,所以!类型,!类型的本质应该是可选类型3.11)声明为!添加类型时添加它!强制解包不需要自己添加!需要保证不为空,否则使用会报错4.String4.1)...表示闭区间/..<表示开区间,==表示等值/===表示samereference,+可以直接加一个string或者arrayValuecopy,是一个新的copy,swift只在必要的时候做一个copy4.3)可以用forin遍历字符串,用count全局函数计算字符个数,用isEmpty属性判断是否为空字符串,有hasPrefix判断前缀(后缀等)5.数组5.1)swift中的数组可以用[String]和Array来声明,它们的含义是一样的,赋值也是直接用方括号[]来表示,里面的值需要是的同类型使用下标区间取值,区间为数组5.3)foriteminshoppingList/for(index,value)inenumerate(shoppingList)两种遍历方式,后面会知道下标5.4)就可以pass[Double](count:3,repeatedValue:3.3)/Array(count:3,repeatedValue:2.5)初始化一个数组5.5)数组也是按值传递的,如果数组a赋值给数组b,a和b是两份,互相修改不会影响6.字典6.1)字典是通过[String:S声明的tring]/Dictionary,形式也是[a:b,c:d]的形式,可以通过key访问value6.2)直接通过a[添加键值对b]=c,通过updateValue和removeValueForKey增删键值对6.3)你可以使用for(airportCode,airportName)inairports/forairportCodeinairports.keys来遍历key-valuepairsorkeyorvalue6.4)你可以直接赋值[:]清空字典,key值可以是Int;和string、array一样,dictionary也是一个值拷贝7.Set7.1)使用Set声明Set和array和它的赋值完全一样,也可以通过赋值[]清空,也必须同类型,还有insert/contains方法,isEmpty属性7.2)Set也有forin遍历,有取两个set的差值进行排列的方法,也有判断子集超集的方法8.for循环8.1)forindexin1...5索引只在当前循环范围内。如果for循环外有索引,任何修改都不会影响它。8.2)for_in1...10如果不需要循环的索引,可以用下划线_代替,只要swift中不需要这个值,一般可以用_代替8.3)for变量索引=0;指数<3;++index这种for循环也是可以的9.Switch语句9.1)在swift中Switch必须穷举所有的可能性,否则必须加上default。穷举时,可以在一个case后面放很多可能的值,用逗号隔开。9.2)穷举可以用...和..<区间表示,对于元组,一个可以用_通配符,一个可以匹配,也可以都匹配,也可以都是区间(也可以只用一个元素valuebinding)9.3)在做通用匹配时,可以使用varx/letx,或者let(x,y)进行valuebinding,可以修改var声明。9.4)使用let作为值绑定时,可以添加where进行条件判断。Switch不需要使用break来防止穿透。但是还是会去下一个case判断条件是否匹配,使用break还是可以跳出switch9.5)在switch中也可以使用break/continue跳出一个label