Swift學習筆記(一)

Swift 對空格有要求。

Swift數據類型

  • Int 相當于NSInteger,根據不同平臺有不同的長度。
  • 無符號類型UInt,盡量不要使用UInt。
  • 浮點數,Double(64位浮點數),Float(32位浮點數)。
  • 布爾值,Swift有一個基本的布爾(Boolean)類型,叫做Bool。有兩個布爾常量true,和False。在OC中為YES,NO.
  • 字符串,String,OC中對應為NSString。
  • 字符,Character,即單個字母。OC中對應為Char。
  • 可選類型,Optional,用來處理值可能缺失的情況。表示有值或沒有值

類型別名

typealias,對當前類型定義另一個名字。typealias newStr = String

類型安全

type safe,Swift會在編譯代碼時進行類型檢查(type checks)

類型推斷

如果沒有顯示指定類型,Swift會使用類型推斷(type inference)來選擇合適的類型。浮點數會優先推斷為Double。

Swift可選類型

Swift使用 ? 作為命名類型Optional的簡寫,Optional是一個含有兩種情況的枚舉,None和Some(T),用來表示可能或可能沒有值。任何類型都可以聲明或隱式轉換為可選類型,聲明時要確保給操作符一個合適的范圍。類型和?之間沒有空格。以下兩種方式等價。

var optionalInt: Int?
var optionalInt2: Optional<Int>

聲明可選變量如未給定初始值,默認為nil。

強制解析

當使用操作符聲明時,如果確定可選類型包含值一個非nil值,可以在變量后面加上!來強制解析(forced unwrapping)。如果值為nil則會導致運行時錯誤。

自動解析

聲明可選變量時,使用!替換,這樣在解析可選變量時就可以不用加上!,以實現自動解析。

可選綁定?

使用可選綁定(optional binding)來判斷可選類型是否包含值,如果包含就把值復制給一個臨時常量或變量。eg:

// 可選綁定
if let myInt = optionalInt {
    print(myInt)
}

Swift 常量?

Swift常量使用關鍵字let聲明,必須初始值。let constantName = <initial value>

類型標注

聲明一個常量或者變量時候可以選擇加上類型標注(type annotation),用于說明常量或者變量中要存儲的值的類型。使用方法為在常量或者變量后加上冒號空格,然后加上類型名稱。 var constantName: <data type> = <optional initial value>

輸出

Swift中使用print替換了原來的println函數來輸出常量和變量。在字符串中可以使用\()來插入常量和變量。

Swift字面量

字面量:能夠直接了當的指出自己的類型并為變量進行賦值的值,如整型字面量、浮點型字面量、字符串型字面量和布爾型字面量。

字符串型字面量的轉義

轉義字符 含義
\0 空字符
\ 反斜線 \
\b 退格(BS) , 將當前位置移到前一列
\f 換頁(FF),將當前位置移到下頁開頭
\n 換行符
\r 回車符
\t 水平制表符
\v 垂直制表符
' 單引號
" 雙引號
\000 1到3位八進制數所代表的任意字符
\xhh... 1到2位十六進制所代表的任意字符

布爾型字面量默認類型為Bool,包含三個值:true , false , nil

Swift運算符

運算符是一個符號,用戶告訴編譯器執行一個數學或邏輯運算。包含

  • 算數運算符
  • 比較運算符
  • 邏輯運算符
  • 位運算符
  • 賦值運算符
  • 區間運算符(閉區間運算符:...。 半開區間運算符:..<。)
  • 其他運算符(一元加、一元減、三元運算符)

Swift條件語句

語句 描述
if 語句 if 語句由一個布爾表達式和一個或多個執行語句組成。
if...else語句 if 語句后可以有可選的 else 語句, else 語句在布爾表達式為 false 時執行。可用?:代替
if...else if...else 語句 if 后可以有可選的 else if...else 語句, else if...else 語句常用于多個條件判斷。
內嵌 if 語句 你可以在 if 或 else if 中內嵌 if 或 else if 語句。
switch 語句 switch 語句允許測試一個變量等于多個值時的情況。

Swift循環

循環類型

循環類型 描述
for-in 遍歷一個集合里面的所有元素,例如由數字表示的區間、數組中的元素、字符串中的字符。
for 循環 用來重復執行一系列語句直到達成特定條件達成,一般通過在每次循環完成后增加計數器的值來實現。
while 循環 運行一系列語句,如果條件為true,會重復運行,直到條件變為false。
repeat...while 循環 類似 while 語句區別在于判斷循環條件之前,先執行一次循環的代碼塊。類似于do...while。

循環控制語句

控制語句 描述
continue 語句 告訴一個循環體立刻停止本次循環迭代,重新開始下次循環迭代。
break 語句 中斷當前循環。
fallthrough 語句 如果在一個case執行完后,繼續執行下面的case,需要使用fallthrough(貫穿)關鍵字。

Swift字符串

Swift字符串類型為String

字符串創建

var stringA = "I`m string" // 字面量創建
var stringB = String("I`m string too") // String實例化,不推薦

空字符串

創建空字符串:

var stringA = "" // 字面量創建
var stringB = String() // String實例化創建

isEmpty可用來判斷字符串是否為空!

字符串連接

字符串可通過+來連接

字符串長度

字符串可通過String.characters.count屬性來計算

字符串比較

字符串通過==來比較是否相等

字符串函數和運算符

  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. != 比較兩個字符串?是否不相等。

swift字符

Swift字符數據類型為Character.Swift無法創建空的Character類型的變量或常量。

遍歷字符串中的字符

for ch in "I`m string".characters {
    print(ch)
}

字符串連接字符

可以使用String的append(c: Character)來連接字符

var char: Character = "A"
stringA.append(char)
print(stringA)

Swift數組

Swift中數組的數據類型為Array,使用有序列表存儲同一類型的多個值。Swift中的數組元素類型沒有限制。

創建數組

var emptyArray = [someType]() // 空數組
var sizeArray = [someType](repeating: 0, count: 3) // 大小為3,初始值為0的數組
var someArray = [1,2,3] // 直接創建

訪問數組

根據數組的索引來訪問數組的元素。var someVar = someArray[index]

使用count屬性來計算數組元素個數

使用isEmpty屬性判斷數組是否為空,返回布爾值。

修改數組

  • 通過索引來直接更改元素的值
  • 通過append()方法或者賦值運算符+=在數組末尾添加元素。

遍歷數組

  • 使用for in 遍歷
  • 使用enumerate()方法進行數組遍歷。

合并數組

使用+來合并兩種相同類型的數組。新數組的類型會從兩個數組的數據類型中推斷出來。

Swift字典

Swift字典用來存儲無序的相同類型數據的集合。Swift中的Key和Value的類型沒有限制。

創建字典

與數組相似。

var emptyDict = [keyType : valueType]() // 空字典
var someDict: [Int : Int] = [1:11, 2: 22] // 字典實例

訪問字典

通過字典的索引Key來訪問數組元素。var someVar = someDict[key]

使用只讀屬性count計算字典有多少鍵值對

使用只讀屬性isEmpty屬性來判斷字典是否為空,返回布爾值。

修改字典

  • 通過下標key增加或修改字典。key存在則修改,key不存在則增加
  • 通過updateValue(value: Value, forKey key: Key) -> Value?來增加或修改字典。規則同上。

移除Key-Value

  • 通過設置下標key的Value為nil來移除。
  • 通過removeValue(forKey: Key) -> Value?來移除,若key存在則返回value值,反之返回nil.

遍歷字典

  • 使用for-in循環遍歷
  • 使用enumerate()進行遍歷,返回字典索引和鍵值對
for (key , value) in someDict {
    print("\(key):\(value)")
}

for (index , value) in someDict.enumerate() {
    print("\(index):\(value)")
}

字典轉換為數組

提取字典的鍵值,并轉換為獨立的數組。

let arrayKeys = [Int](someDict.keys)
let arrayValues = [Int](someDict.values)

參考:

Swift 教程 | 菜鳥教程

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,517評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,087評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,521評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,493評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,207評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,603評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,624評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,813評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,364評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,110評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,305評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,874評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,532評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,953評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,209評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,033評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,268評論 2 375

推薦閱讀更多精彩內容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,855評論 1 10
  • 53.計算字符 在字符串中獲取字符值的數量, 可以使用字符串字符屬性中的計數屬性: let unusualMena...
    無灃閱讀 1,119評論 0 4
  • 一直沒有時間好好看一下swift,最近復習了一遍語法,這里記錄swift學習過程中遇到的一些問題和要點,和Obje...
    bomo閱讀 2,388評論 0 25
  • 。net(donet)含義一般指。Net FrameWork框架,是microsoft為開發應用程序二創建的一個具...
    陳果123閱讀 263評論 0 0
  • 親友們,請幫忙投下票唄!818號苑振業http://mp.weixin.qq.com/s/Rmud1JTW1ZKU...
    戒你如煙閱讀 148評論 1 1