學習地址:http://www.rm5u.com/ 或 http://www.runoob.com/ iPhone或iTouch的寬為320像素,高為480像素,狀態欄高為20像素,toobar高為44像素,tabbar高為49像素,導航欄高為44像素。 typealias:類型別名對當前的類型定義 ...
學習地址:http://www.rm5u.com/ 或 http://www.runoob.com/
- 如果創建的是 OS X playground 需要引入 Cocoa; 如果我們想創建 iOS playground 則需要引入 UIKit .
-
iPhone或iTouch的寬為320像素,高為480像素,狀態欄高為20像素,toobar高為44像素,tabbar高為49像素,導航欄高為44像素。
-
typealias:類型別名對當前的類型定義了另一個名字;
-
Swfit語言定義尾碼?作為命名類型Optional(可選)的簡寫;
var optionalInteger: Int? //或者 var optionalInteger: Optional<Int>
-
強制解析:當你確定可選類型確實包含值之後,你可以在可選的名字後面加一個感嘆號(!)來獲取值。
var myString:String? myString = "Hello, Swift!" if myString != nil { // 強制解析 print( myString! ) } else { print("myString 值為 nil") }
註意:使用!來獲取一個不存在的可選值會導致運行時錯誤。使用!來強制解析值之前,一定要確定可選包含一個非nil的值。
-
自動解析:你可以在聲明可選變數時使用感嘆號(!)替換問號(?)。
var myString:String! myString = "Hello, Swift!" if myString != nil { print(myString) } else { print("myString 值為 nil") }
-
可選綁定:使用可選綁定(optional binding)來判斷可選類型是否包含值,如果包含就把值賦給一個臨時常量或者變數。
if let constantName = someOptional { statements } // example : var myString : String? myString = "Hello, Swift!" if let yourString = myString { print("你的字元串值為 - \(yourString)") } else { print("你的字元串沒有值") }
- 整型字面量可以是一個十進位,二進位,八進位或十六進位常量。 二進位首碼為 0b,八進位首碼為 0o,十六進位首碼為 0x,十進位沒有首碼
let decimalInteger = 17 // 17 - 十進位表示 let binaryInteger = 0b10001 // 17 - 二進位表示 let octalInteger = 0o21 // 17 - 八進位表示 let hexadecimalInteger = 0x11 // 17 - 十六進位表示
-
註意:Swift中的字母採用的是Unicode編碼[1]。Unicode叫做統一編碼制,它包含了亞洲文字編碼,如中文、日文、韓文等字元,甚至是我們在聊天工具中使用的表情符號
如果一定要使用關鍵字作為標識符,可以在關鍵字前後添加重音符號(`) - 浮點型字面量的預設推導類型為 Swift 標準庫類型中的 Double,表示64位浮點數。
十進位浮點型字面量 :1.25e2 表示 1.25 ⨉ 10^2,也就是 125.0;同樣,1.25e-2 表示 1.25 ⨉ 10^-2,也就是 0.0125。
十六進位浮點型字面量:0xFp2 表示 15 ⨉ 2^2,也就是 60;同樣,0xFp-2 表示 15 ⨉ 2^-2,也就是 3.75。
eg: 浮點型字面量允許使用下劃線 _ 來增強數字的可讀性,下劃線會被系統忽略,因此不會影響字面量的值。同樣地,也可以在數字前加 0,並不會影響字面量的值。 -
字元串型字面量:
轉移字元 含義 \0 空字元 \\ 反斜線 \ \b 退格(BS) ,將當前位置移到前一列 \f 換頁(FF),將當前位置移到下頁開頭 \n 換行符 \r 回車符 \t 水平製表符 \v 垂直製表符 \' 單引號 \" 雙引號 \000 1到3位八進位數所代表的任意字元 \xhh... 1到2位十六進位所代表的任意字元 - 位運算符:位運算符用來對二進位位進行操作,~,&,|,^分別為取反,按位與與,按位與或,按位與異或運算,如下表實例:
p q p & q p | q p ^ q 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 指定 A = 0011 1100 ; B = 0000 1101
運算符 描述 圖解 實例 & 按位與。按位與運算符對兩個數進行操作,然後返回一個新的數,這個數的每個位都需要兩個輸入數的同一位都為1時才為1。 (A & B) 結果為 12, 二進位為 0000 1100 | 按位或。按位或運算符|比較兩個數,然後返回一個新的數,這個數的每一位設置1的條件是兩個輸入數的同一位都不為0(即任意一個為1,或都為1)。 (A | B) 結果為 61, 二進位為 0011 1101 ^ 按位異或. 按位異或運算符^比較兩個數,然後返回一個數,這個數的每個位設為1的條件是兩個輸入數的同一位不同,如果相同就設為0。 (A ^ B) 結果為 49, 二進位為 0011 0001 ~ 按位取反運算符~對一個操作數的每一位都取反。 (~A ) 結果為 -61, 二進位為 1100 0011 in 2's complement form. << 按位左移。左移操作符(<<)將操作數的所有位向左移動指定的位數。 下圖展示了11111111 << 1(11111111 左移一位)的結果。藍色數字表示被移動位,灰色表示被丟棄位,空位用橙色的0填充。
A << 2 結果為 240, 二進位為 1111 0000 >> 按位右移。右移操作符(<<)將操作數的所有位向又移動指定的位數。 下圖展示了11111111 >> 1(11111111 右移一位)的結果。藍色數字表示被移動位,灰色表示被丟棄位,空位用橙色的0填充。
A >> 2 結果為 15, 二進位為 0000 1111 - 賦值運算:
運算符 描述 實例 = 簡單的賦值運算,指定右邊操作數賦值給左邊的操作數。 C = A + B 將 A + B 的運算結果賦值給 C += 相加後再賦值,將左右兩邊的操作數相加後再賦值給左邊的操作數。 C += A 相當於 C = C + A -= 相減後再賦值,將左右兩邊的操作數相減後再賦值給左邊的操作數。 C -= A 相當於 C = C - A *= 相乘後再賦值,將左右兩邊的操作數相乘後再賦值給左邊的操作數。 C *= A 相當於 C = C * A /= 相除後再賦值,將左右兩邊的操作數相除後再賦值給左邊的操作數。 C /= A 相當於 C = C / A %= 求餘後再賦值,將左右兩邊的操作數求餘後再賦值給左邊的操作數。 C %= A 相當於 C = C % A <<= 按位左移後再賦值 C <<= 2 相當於 C = C << 2 >>= 按位右移後再賦值 C >>= 2 相當於 C = C >> 2 &= 按位與運算後賦值 C &= 2 相當於 C = C & 2 ^= 按位異或運算符後再賦值 C ^= 2 相當於 C = C ^ 2 |= 按位或運算後再賦值 C |= 2 相當於 C = C | 2 - 區間運算符:
運算符 描述 實例 閉區間運算符 閉區間運算符(a...b)定義一個包含從a到b(包括a和b)的所有值的區間,b必須大於等於a。 閉區間運算符在迭代一個區間的所有值時是非常有用的,如在for-in迴圈中: 1...5 區間值為 1, 2, 3, 4 和 5 半開區間運算符 半開區間(a..<b)定義一個從a到b但不包括b的區間。 之所以稱為半開區間,是因為該區間包含第一個值而不包括最後的值。<="" td=""> 1..< 5 區間值為 1, 2, 3, 和 4 - 三目運算符:(
a ? b : c) -- 如果a為true,值為b,否則為c.
運算符優先順序:
- 指針最優,單目運算優於雙目運算。如正負號。
- 先乘除(模),後加減。
- 先算術運算,後移位運算,最後位運算。請特別註意:1 << 3 + 2 & 7 等價於 (1 << (3 + 2))&7
- 邏輯運算最後計算
運算符類型 運算符 結合方向 表達式運算 () [] . expr++ expr-- 左到右 一元運算符 * & + - ! ~ ++expr --expr
* / %
+ -
>> <<
< > <= >=
== !=
右到左 位運算符 &
^
|
&&
||
左到右 三元運算符 ?: 右到左 賦值運算符 = += -= *= /= %= >>= <<= &= ^= |= 右到左 逗號 , 左到右 - Swift 條件語句
語句 描述 if 語句 由一個布爾表達式和一個或多個執行語句組成。 if 語句 後可以有可選的 else 語句, else 語句在布爾表達式為 false 時執行。 if 後可以有可選的 else if...else 語句, else if...else 語句常用於多個條件判斷。 你可以在 if 或 else if 中內嵌 if 或 else if 語句。 switch 語句允許測試一個變數等於多個值時的情況。 - Swift 迴圈
迴圈類型 描述 遍歷一個集合裡面的所有元素,例如由數字表示的區間、數組中的元素、字元串中的字元。 用來重覆執行一系列語句直到達成特定條件達成,一般通過在每次迴圈完成後增加計數器的值來實現。 運行一系列語句,如果條件為true,會重覆運行,直到條件變為false。 類似 while 語句區別在於判斷迴圈條件之前,先執行一次迴圈的代碼塊。
控制語句 描述 告訴一個迴圈體立刻停止本次迴圈迭代,重新開始下次迴圈迭代。 中斷當前迴圈。 如果在一個case執行完後,繼續執行下麵的case,需要使用fallthrough(貫穿)關鍵字。 - Swift 字元串
創建字元串:你可以通過使用字元串字面量或 String 類的實例來創建一個字元串:
import UIKit // 使用字元串字面量 var stringA = "Hello, World!" print( stringA ) // String 實例化 var stringB = String("Hello, World!") print( stringB )
空字元串:你可以使用空的字元串字面量賦值給變數或初始化一個String類的實例來初始值一個空的字元串。 我們可以使用字元串屬性 isEmpty 來判斷字元串是否為空:
import UIKit // 使用字元串字面量創建空字元串 var stringA = "" if stringA.isEmpty { print( "stringA 是空的" ) } else { print( "stringA 不是空的" ) } // 實例化 String 類來創建空字元串 let stringB = String() if stringB.isEmpty { print( "stringB 是空的" ) } else { print( "stringB 不是空的" ) }
字元串常量:你可以將一個字元串賦值給一個變數或常量,變數是可修改的,常量是不可修改的。
字元串中插入值:字元串插值是一種構建新字元串的方式,可以在其中包含常量、變數、字面量和表達式。 您插入的字元串字面量的每一項都在以反斜線為首碼的圓括弧中:import UIKit var varA = 20 let constA = 100 var varC:Float = 20.0 var stringA = "\(varA) 乘以 \(constA) 等於 \(varC * 100)" print( stringA )
字元串連接:字元串可以通過 + 號來連接。
字元串長度:字元串長度使用 String.characters.count 屬性來計算
字元串比較:可以使用 == 來比較兩個字元串是否相等
Unicode 字元串:Unicode 是一個國際標準,用於文本的編碼,Swift 的 String 類型是基於 Unicode建立的。你可以迴圈迭代出字元串中 UTF-8 與 UTF-16 的編碼,實例如下:import UIKit var unicodeString = "學習教程" print("UTF-8 編碼: ") for code in unicodeString.utf8 { print("\(code) ") } print("\n") print("UTF-16 編碼: ") for code in unicodeString.utf16 { print("\(code) ") }
字元串函數以及運算符:
序號 函數/運算符 & 描述 1 isEmpty
判斷字元串是否為空,返回布爾值
2 hasPrefix(prefix: String)
檢查字元串是否擁有特定首碼
3 hasSuffix(suffix: String)
檢查字元串是否擁有特定尾碼。
4 Int(String)
轉換字元串數字為整型。 實例:
let myString: String = "256" let myInt: Int? = Int(myString)
5 String.characters.count
計算字元串的長度
6 utf8
您可以通過遍歷 String 的 utf8 屬性來訪問它的 UTF-8 編碼
7 utf16
您可以通過遍歷 String 的 utf8 屬性來訪問它的 UTF-16 編碼
8 unicodeScalars
您可以通過遍歷String值的unicodeScalars屬性來訪問它的 Unicode 標量編碼.
9 +
連接兩個字元串,並返回一個新的字元串
10 +=
連接操作符兩邊的字元串並將新字元串賦值給左邊的操作符變數
11 ==
判斷兩個字元串是否相等
12 <
比較兩個字元串,對兩個字元串的字母逐一比較。
13 !=
比較兩個字元串是否不相等。
- Swift 字元(Character)
Swift 的字元是一個單一的字元字元串字面量,數據類型為 Character:import UIKit let char1: Character = "A" let char2: Character = "B" print("char1 的值為 \(char1)") print("char2 的值為 \(char2)")
註意:如果想在 Character(字元) 類型的常量中存儲更多的字元,則程式執行會報錯。
Swift 中不能創建空的 Character(字元) 類型變數或常量。
遍歷字元串中的字元:Swift 的 String 類型表示特定序列的 Character(字元) 類型值的集合; 每一個字元值代表一個 Unicode 字元;您可通過for-in迴圈來遍歷字元串中的characters屬性來獲取每一個字元的值:import UIKit for ch in "Hello".characters { print(ch) }
字元串連接字元:使用 String 的 append() 方法來實現字元串連接字元:
import UIKit var varA:String = "Hello " let varB:Character = "G" varA.append( varB ) print("varC = \(varA)")
- Swift 數組
創建數組:
可以使用構造語法來創建一個由特定數據類型構成的空數組:
var someArray = [someType]()
創建一個初始化大小數組的語法:
var someArray = [someType](count: NumberofElements, repeatedValues: InitialValue)
創建一個類型為Int,大小為3,初始值為0的空數組:
var someInts = [Int](count: 3, repeatedValues: 0)
創建含有三個元素的數組:
var someInts:[Int] = [10,20,30]訪問數組:我們可以根據數組的索引來訪問數組的元素:
var someVar = someArray[index]修改數組:可以使用 append() 方法或者賦值運算符 += 在數組末尾添加元素,如下所示,我們初始化一個數組,並向其添 加元素,也可以通過索引修改數組元素的值。
遍曆數組:可以使用for-in迴圈來遍歷所有數組中的數據項,如果我們同時需要每個數據項的值和索引值,可以使用 String 的 enumerate() 方法來進行數組遍歷:
import UIKit var someStrs = [String]() someStrs.append("Apple") someStrs.append("Amazon") someStrs.append("Runoob") someStrs += ["Google"] for (index, item) in someStrs.enumerate() { print("在 index = \(index) 位置上的值為 \(item)") }
合併數組:我們可以使用加法操作符(+)來合併兩種已存在的相同類型數組。新數組的數據類型會從兩個數組的數據類型中 推斷出來。
isEmpty屬性:可以通過只讀屬性 isEmpty 來判斷數組是否為空,返回布爾值;
Count屬性:可以使用count屬性來計算數組元素個數;