Swift的数据类型
Swift 的类型是在 C 和 Objective-C 的基础上提出的,Int是整型;Double和Float是浮点型;Bool是布尔型;String是字符串。Swift 还有两个有⽤用的集合类型, Array和Dictionary,

除了我们熟悉的类型,Swift 还增加了 Objective-C 中没有的类型比如元组(Tuple)。元组可以让你创建或者传递一组数据,比如作为函数的返回值时,你可以用一个元组可以返回多个值。

Swift 还增加了可选(Optional)类型,用于处理值缺失的情况。可选表示“那儿有一个值,并且它等于 x ”或者“那儿没有值”。可选有点像在Objective-C 中使用 nil,但是它可以用在任何类型上,不仅仅是类。可选类型比 Objective-C 中的 nil指针更加安全也更具表现力,它是 Swift 许多强大特性的重要组成部分。

Swift用字符串插值(string interpolation)的方式把常量名或者变量名当
做占位符加入到⻓长字符串中,Swift会⽤用当前常量或变量的值替换这些占位
符。将常量或变量名放⼊入反斜杠符加一对圆括号中 "\()":

整数边界
使用min或max值来获取该类型的最大最小值,如:
let minValue = UInt8.min // minValue is equal to 0, and
is of type UInt8  let maxValue = UInt8.max // maxValue is
equal to 255, and is of type UInt8     这些值边界值区分了整数
的类型(⽐比如 UInt8),所以可以像该类型的其他值⼀一样被⽤用在表达式中⽽而不
⽤用考虑益处的问题。

类型别名为现有类型定义的替代名称。您可以使用typealias关键字定义类型别名。当你使用的类型名称更符合上下文时,可以定义如:typealias AudioSample = UInt16

元组类型
元组类型可以将一些不同的数据类型组装成一个元素,这个元素可以用来作为函数的返回值返回包含多种数据类型的值。例:let http404Error = (404, "Not Found")

可选类型
在一个值可能不存在的时候,可以使用可选类型。这种类型的定
义是:要么存在这个值,且等于x,要么在这个值不存在。

使用断言调试
断言是一种实时检测条件是否为true的方法。如果这个条件为false,那么代码将会中断执行。



基本预算符
1、b为负值时的b的符号被忽略,这意味着%b和%-b的结果是
一样的。
println("-9 除 4 取余:\(-9%4)");    - -9 除 4 取余:-1
println("-9 除 -4 取余:\(-9%(-4))");  -> -9 除 -4 取余:-1
不同于C和Objective-C,Swift的余数运算符也能运用于浮点数:

2、封闭范围运算符
封闭范围运算符(a…b)定义了一个范围,从a到b,并包括a和b的
值。
3、半封闭的区域运算符
半封闭的区域运算符(a..b)定义了从a到b的范围,但不包括b。

4、字符串通过isEmpty属性可以检查一个字符串是否为空

5、数组
a)通过只读属性count来读取数组的长度;
b)通过一个返回布尔类型的isEmpty属性检查数组的长度是否为0
c)在数组末尾增加一个元素可以通过append方法
d)甚至,还可以用(+=)操作符来把一个元素添加到数组末尾
e)你也可以用(+=)操作符来把一个数组添加到另一个数组的末尾
f)你可以使用下标语法一次性改变一系列的值,尽管修改的区域远远大于要修改的值。在下面的雷子中,  替换掉
“Chocolate  Spread”,  “Cheese”,”Butter”,”Bananas”,”Apples”:
shoppingList[4...6] = ["Bananas", "Apples"]  // shoppingList 现在包含6个元素
g)在一个特定的索引位置插入一个值,可以使用insert(atIndex:)方法shoppingList.insert("Maple Syrup", atIndex: 0)
h)你可以调用removeAtIndex方法移除特定的元素。这个方法移除特定索引位置的元素,已经返回这个被移除的元素(尽管你并不关心这个返回值)。
i)如果你从数组中移除最后一个元素,使用removeLast方法
j)遍历数组
i.可以使用for-in循环来遍历数组中的值
ii.使用enumerate函数代替会更方便,enumerate函数对于每一个元素都会返回一个包含元素的索引和值的元组(tuple)。
例:for (index, value) in enumerate(shoppingList)    
k)你可以通过这个初始化方法增加一个新的数组,元素的数量成为count,合适的默认值为repeatedValue    例var threeDoubles = Double[](count: 3, repeatedValue: 0.0)  
6、字典
a)
i.updateValue(forKey:) 方法去设置或者更新一个特定键的值、
ii.updateValue(forKey:)  方法如果键不存在则会设置它的值,如果键存在则会更新它的值,  和下标不一样是,
iii.updateValue(forKey:) 方法  如果更新时,会返回原来旧的值
a)removeValueForKey方法,这个方法如果存在键所对应的值,则移除一个键值对,并返回被移除的值,否则返回nil
b)字典中的每一个元素都会返回一个元祖(tuple),你可以在循环部分分解这个元祖,并用临时变量或者常量来储存它。
例子:for (airportCode, airportName) in airports {  println("\(airportCode): \(airportName)")  }
注意Swift中的字典类型是非序列化集合
7、Where关键词
switch语句可以使用where关键词来增加判断的条件,在下面的例子中:

let yetAnotherPoint = (1, -1)   

 switch yetAnotherPoint 

 {    

 case let (x, y) where x == y:   

 println("(\(x), \(y)) is on the line x == y")   

 case let (x, y) where x == -y:   

 println("(\(x), \(y)) is on the line x == -y")   

 case let (x, y):   

 println("(\(x), \(y)) is just some arbitrary  point")   

 }


每个case都因为有where而不同,第一个case就是判断x是
否与y相等,表示点在斜线y=x上。
8、控制跳转语句
    在Swift中控制跳转语句有4种,让编程人员更好地控制代码的流转,包括:

continue 

 break 

 fallthroughreturn   

 return



   fallthrough
由于Swift中的switch语句不会自动的因为没有break而跳转
到下一个case,因此如果需要想C语言中那样,依次执行每个
case的时候,就需要用到fallthrough关键词。