標籤:swift apple mac
1、使用 let 來聲明常量,使用 var 來聲明變數。註:你可以在一行中聲明多個常量或者多個變數,用逗號隔開。
2、類型標註如果初始值沒有提供足夠的資訊(或者沒有初始值),那你需要在變數後面宣告類型,用冒號分割。
let variable: String 注意:一般來說你很少需要寫類型標註。如果你在聲明常量或者變數的時候賦了一個初始值,Swift可以推斷出這個常量或者變數的類型。
3、輸出函數println 和 printprintln:是一個用來輸出的全域函數,輸出的內容會在最後換行。print:唯一區別是在輸出內容最後不會換行。
4、把值轉換成字串有一種更簡單的把值轉換成字串的方法:把值寫到括弧中,並且在括弧之前寫一個反斜線。
let apples = 3 let oranges = 5
let appleSummary = "I have \(apples) apples."
let fruitSummary = "I have \(apples + oranges) pieces of fruit."
5、注釋單行注釋://多行注釋:/* */
6、浮點數Double:表示64位浮點數。當你需要儲存很大或者很高精度的浮點數時請使用此類型。Float:表示32位浮點數。精度要求不高的話可以使用此類型。
7、類型別名資料型別別名(type aliases)就是給現有類型定義另一個名字。你可以使用 typealias 關鍵字來定義類型別名。
例如:當你想要給現有類型起一個更有意義的名字時,類型別名非常有用。假設你正在處理特定長度的外部資源的資料:typealias AudioSample = UInt16
var minFound = AudioSample.min
var maxFound = AudioSample.max
8、建立元組 tuples元組(tuples)把多個值組合成一個複合值。元組內的值可以使任意類型,並不要求是相同類型。
例如:let http404Error = (404, "Not Found")
9、元組內容的分解可以將一個元組分解成單獨的常量和變數使用。let (statusCode, statusStr) = http404Error
如果你只需要一部分元組值,分解的時候可以把要忽略的部分用底線(_)標記。
let (justTheStatusCode, _) = http404Error
你還可以通過下標來訪問元組中的單個元素,下標從零開始。var code = http404Error.0var msg = http404Error.1
10、可選值 optionals 的強制解析一個可選的 Int 被寫作 Int?而不是 Int,它表示這個整形變數可能有值,或者可能為nil(沒值)。你可以使用 if 語句來判斷一個可選是否包含值。如果可選有值,結果是 true;如果沒有值,結果是 false。
可選值的強制解析:當你知道可選確實包含值後,則可以在可選的名字後面加上一個驚嘆號(!)來擷取值。
11、nil這個表示沒有值的意思。如果你聲明一個可選常量或者變數但是沒有賦值,它們會自動被設定為 nil:
var surveyAnswer: String?
注意:nil 不能用於非可選的常量和變數。如果你的代碼中有常量或者變數需要處理值缺失的情況,請把它們聲明成對應的可選類型。
12、 隱式解析可選有時候在程式架構中,第一次被賦值之後,可以確定一個可選總會有值。在這種情況下,每次都要判斷和解析可選值是非常低效的,因為可以確定它總會有值。
這時我們就可以使用隱式解析可選,只需要把後面的 ? 改成 ! 即可。
13、隱式可選和可選的取值區別let possibleString: String? = "An optional string."
println(possibleString!) // 需要驚歎號來擷取值
let assumedString: String! = "An implicitly unwrapped optional string."
println(assumedString) // 不需要驚嘆號
注意:如果一個變數之後可能變成 nil 的話請不要使用隱式解析可選。如果你需要在變數的 生命週期中判斷是否是 nil 的話,請使用普通可選類型。
14、斷言有時候如果缺少某些條件,我們不想讓代碼繼續執行下去,就可以使用斷言(assertion)。斷言會判斷一個邏輯條件是否為true,如果是true則執行下去;否則就中止運行。使用assert函數來寫斷言,例如:let age = -3
assert(age >= 0, "a person‘s age can not less than 0”)
因為age >= 0 為false, 則斷言觸發,中止運行。
15、何時使用斷言- 整數的附屬指令碼索引被傳入一個自訂附屬指令碼實現,但是下標索引值可能太小或者太大。
- 需要給函數傳入一個值,但是非法的值可能導致函數不能正常執行。- 一個可選值現在是nil,但是後面的代碼運行需要一個非 nil 值。
注意:斷言可能導致你的應用終止運行,所以你應當仔細設計你的代碼來讓非法條件不會出現。然而,在你的應用發布之前,有時候非法條件可能出現,這時使用斷言可以快速發現問題。
16、建立數組和字典使用方括弧[ ]來建立數組和字典,並使用下標或者鍵(key)來訪問元素。
var shoppingList = [" catfish", "water", " tulips", "blue paint"]
var occupations = [ "Malcolm": "Captain",
"Kaylee": "Mechanic",]
17、建立空數組和字典如果類型資訊可以被推斷出來,你可以用[]和[:]來建立空數組和空字典——就像你聲明變數或者給函數傳參數的時候一樣。
18、負數求餘在對負數 -b 求餘時, -b的符號會被忽略. 這意味著 a % b 和 a % -b的結果是相同的.
19、閉區間運算子閉區間運算子 a...b 定義一個包含從 a 到 b (包括 a 和 b)的所有值的區間。
20、半閉區間運算子半閉區間 a..<b 定義一個從 a 到 b 但不包括 b 的區間. 之所以稱為半閉區間, 是因為該區間包含第一個值而不包括最後的值。方便的使用於數組,例如:let names = ["Anna", "Alex", "Brian", "Jack"] let count = names.count for i in 0..<count { println("第 \(i + 1) 個人叫 \(names[i])") }
21、字串字面量代碼中包含一段預定義的字串值作為字串字面量,它可以包含下面的特殊字元:1.轉義特殊字元 \0 (Null 字元)、\\(反斜線)、\t (水平定位字元)、\n (分行符號)、\r (斷行符號符)、\" (雙引號)、\‘ (單引號)。2.單位元組 Unicode 標量,寫成 \xnn,其中 nn 為兩位十六進位數。3.雙位元組 Unicode 標量,寫成 \unnnn,其中 nnnn 為四位十六進位數。4.四位元組 Unicode 標量,寫成 \Unnnnnnnn,其中 nnnnnnnn 為八位十六進位數。
22、字串空屬性判斷var str = ""str.isEmpty //true
23、 countElements 函數通過調用全域 countElements 函數,並將字串作為參數進行傳遞可以擷取該字串的字元數量。var str = "andy is a good guy"countElements (str)
24、字串插值插入的字串字面量的每一項都被包裹在以反斜線為首碼的圓括弧中。let multiplier = 3 let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
25、字串比較Swift 提供了三種方式來比較字串的值:字串相等,首碼相等和尾碼相等。(1)字串相等:即使用 == 來比較字串(2)首碼/尾碼相等:通過調用字串的 hasPrefix/hasSuffix 方法來檢查字串是否擁有特定首碼/尾碼,它會返回一個Boolean值。
26、字串大小寫您可以通過字串的 uppercaseString 和 lowercaseString 屬性來訪問一個字串的大寫/小寫版本。
27、數組的類型標註Swift 數組應該遵循像Array<SomeType>這樣的形式,其中sometype是這個數組中唯一允許存在的資料類型。 我們也可以使用像SomeType[]這樣的簡單文法(推薦)。
如果我們建立了一個String 值類型的數組,我們不能往其中插入任何不是String 類型的資料。 Swift 中的數組是型別安全的,並且它們中包含的類型必須明確。var shoppingList: String[] = ["Eggs", "Milk"]
因為Swift有類型推斷, 所以當我們擁有相同類型的數組值時,我們可以寫成:var shoppingList = ["Eggs", "Milk"]
28、建立空數組建立特定資料類型的空數組,例如建立Int類型的空數組。var someInts = Int[]()
29、數組的屬性和方法(1)count屬性:獲得數組中資料的數量。(2)isEmpty屬性:檢查數組是否存在值。(3)append / += 方法:我們可以使用append方法或者 += 運算子在數組後面添加資料項目。例如:shoppingList.append("Flour") 或者 shoppingList += "Baking Powder" 或者 shoppingList += [ "Cheese", "Butter"](4)insert(atIndex:)方法:在某個具體索引值之前添加資料項目。例如:shoppingList.insert("Maple Syrup", atIndex: 0)(5)removeAtIndex()方法:移除數組中的某一項。這個方法把數組在特定索引值中儲存的資料項目移除並且返回這個被移除的資料項目。例如:let mapleSyrup = shoppingList.removeAtIndex(0)(6)removeLast()方法:移除數組中最後一項並返回其值。
30、利用下標改變一系列資料值即使新資料和原有資料的數量是不一樣的。下面的例子把"Chocolate Spread","Cheese",和"Butter" 替換為"Bananas"和 "Apples":shoppingList[4...6] = ["Bananas", "Apples"]
31、數組遍曆一般來說,for-in迴圈即可,但是如果我們需要每個資料項目的值和索引,則需要使用全域 enumerate 函數來進行數組遍曆,例如:for (index, value) in enumerate(shoppingList) { ...}
32、建立特定大小,資料預設的Array// threeDoubles 是一種 Double[]數組, 等於 [0.0, 0.0, 0.0] var threeDoubles = Double[](count: 3, repeatedValue:0.0)
因為我們Swift有類型推斷的存在,所以在使用這種構造方法的時候不需要指明資料類型,因為從value中我們就知道了資料的類型:var anotherThreeDoubles = Array(count: 3, repeatedValue: 2.5)
33、字典字典是一種儲存相同類型多重資料的儲存空間。每個值(value)都關聯獨特的鍵(key),鍵作為字典中的這個值資料的標識符。註:在某個特定字典中可以儲存的鍵和值必須提前定義清楚,方法是通過顯性類型標註或者類型推斷。
Swift 的字典使用Dictionary<KeyType, ValueType>定義,其中KeyType是字典中鍵的資料類型,ValueType是字典中對應於這些鍵所儲存值的資料類型。例如:var airports: Dictionary<String, String> = ["TYO": "Tokyo", "DUB": "Dublin"]
和數組一樣,如果我們使用字面語句構造字典就不用把類型定義清楚。airports的也可以用這種方法簡短定義:var airports = ["TYO": "Tokyo", "DUB": "Dublin"]
34、字典的方法和屬性基本和數組一樣,都有類似的方法和屬性,並且特別存在如下:(1)updateValue(forKey:)方法:在這個鍵不存在對應值的時候設定值或者在存在時更新已存在的值,這個方法返回更新值之前的原值,這樣方便我們檢查更新是否成功。(2)removeValueForKey(KeyName)方法:在鍵值對存在的情況下會移除該鍵值對並且返回被移除的value或者在沒有值的情況下返回nil。
35、移除鍵值對我們可以對某個鍵對應值賦予nil來移除這個鍵值對。airports["APL"] = nil
36、字典遍曆使用for-in即可:for (airportCode, airportName) in airports { ...}
37、字典的keys 或 values 屬性這些屬性代表一個字典的所有key 或 value 的集合。for airportCode in airports.keys { ... }
for airportName in airports.values { .... }
38、將鍵 或 值構造成一個新數組let airportCodes = Array(airports.keys) // airportCodes is ["TYO", "LHR"] let airportNames = Array(airports.values) // airportNames is ["Tokyo", "London Heathrow"]
39、建立一個空字典var namesOfIntegers = Dictionary<Int, String>()
註:如果上下文中存在了空字典的字面語句,例如:namesOfIntegers[16] = "sixteen" ,則我們可以使用 namesOfIntegers = [:] 來定義一個Int, String類型的空字典。
Swift基礎類型