Studying-Swift :Day01

来源:http://www.cnblogs.com/ifish1990/archive/2016/08/29/5819003.html
-Advertisement-
Play Games

學習地址: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/

  1. 如果創建的是 OS X playground 需要引入 Cocoa;  如果我們想創建 iOS playground 則需要引入 UIKit .
  2. iPhone或iTouch的寬為320像素,高為480像素,狀態欄高為20像素,toobar高為44像素,tabbar高為49像素,導航欄高為44像素。

  3. typealias:類型別名對當前的類型定義了另一個名字;

  4. Swfit語言定義尾碼?作為命名類型Optional(可選)的簡寫;

    var optionalInteger: Int?
    //或者
    var optionalInteger: Optional<Int>
  5. 強制解析:當你確定可選類型確實包含值之後,你可以在可選的名字後面加一個感嘆號(!)來獲取值。

    var myString:String?
        myString = "Hello, Swift!"
        if myString != nil {
           // 強制解析
            print( myString! )
        } else {
           print("myString 值為 nil")
        }

    註意:使用!來獲取一個不存在的可選值會導致運行時錯誤。使用!來強制解析值之前,一定要確定可選包含一個非nil的值。

  6. 自動解析:你可以在聲明可選變數時使用感嘆號(!)替換問號(?)。

    var myString:String!
        myString = "Hello, Swift!"
        if myString != nil {
            print(myString)
        } else {
           print("myString 值為 nil")
        }
  7. 可選綁定:使用可選綁定(optional binding)來判斷可選類型是否包含值,如果包含就把值賦給一個臨時常量或者變數。

    if let constantName = someOptional {
            statements
       }
    // example :
       var myString : String?
       myString = "Hello, Swift!"
       if let yourString = myString {
           print("你的字元串值為 - \(yourString)")
       } else {
           print("你的字元串沒有值")
       }
  8. 整型字面量可以是一個十進位,二進位,八進位或十六進位常量。 二進位首碼為 0b,八進位首碼為 0o,十六進位首碼為 0x,十進位沒有首碼
    let decimalInteger = 17           // 17 - 十進位表示
    let binaryInteger = 0b10001       // 17 - 二進位表示
    let octalInteger = 0o21           // 17 - 八進位表示
    let hexadecimalInteger = 0x11     // 17 - 十六進位表示
  9. 註意:Swift中的字母採用的是Unicode編碼[1]。Unicode叫做統一編碼制,它包含了亞洲文字編碼,如中文、日文、韓文等字元,甚至是我們在聊天工具中使用的表情符號
    如果一定要使用關鍵字作為標識符,可以在關鍵字前後添加重音符號(`)

  10. 浮點型字面量的預設推導類型為 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,並不會影響字面量的值。
  11. 字元串型字面量:

    轉移字元含義
    \0 空字元
    \\ 反斜線 \
    \b 退格(BS) ,將當前位置移到前一列
    \f 換頁(FF),將當前位置移到下頁開頭
    \n 換行符
    \r 回車符
    \t 水平製表符
    \v 垂直製表符
    \' 單引號
    \" 雙引號
    \000 1到3位八進位數所代表的任意字元
    \xhh... 1到2位十六進位所代表的任意字元
  12. 位運算符:位運算符用來對二進位位進行操作,~,&,|,^分別為取反,按位與與,按位與或,按位與異或運算,如下表實例:
    pqp & qp | qp ^ 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
  13. 賦值運算:
    運算符描述實例
    = 簡單的賦值運算,指定右邊操作數賦值給左邊的操作數。 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
  14. 區間運算符:
    運算符描述實例
    閉區間運算符 閉區間運算符(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
  15. 三目運算符:(a ? b : c) -- 如果a為true,值為b,否則為c.
  16. 運算符優先順序:
    • 指針最優,單目運算優於雙目運算。如正負號。
    • 先乘除(模),後加減。
    • 先算術運算,後移位運算,最後位運算。請特別註意:1 << 3 + 2 & 7 等價於 (1 << (3 + 2))&7
    • 邏輯運算最後計算
      運算符類型運算符結合方向
      表達式運算 () [] . expr++ expr-- 左到右
      一元運算符

      * & + - ! ~ ++expr --expr

      * / %

      + -

      >> <<

      < > <= >=

      == !=

      右到左
      位運算符

      &

      ^

      |

      &&

      ||

      左到右
      三元運算符 ?: 右到左
      賦值運算符 = += -= *= /= %= >>= <<= &= ^= |= 右到左
      逗號 , 左到右
  17. 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 語句允許測試一個變數等於多個值時的情況。

  18. Swift 迴圈
    迴圈類型描述

    for-in

    遍歷一個集合裡面的所有元素,例如由數字表示的區間、數組中的元素、字元串中的字元。

    for 迴圈

    用來重覆執行一系列語句直到達成特定條件達成,一般通過在每次迴圈完成後增加計數器的值來實現。

    while 迴圈

    運行一系列語句,如果條件為true,會重覆運行,直到條件變為false。

    repeat...while 迴圈

    類似 while 語句區別在於判斷迴圈條件之前,先執行一次迴圈的代碼塊。

    控制語句描述

    continue 語句

    告訴一個迴圈體立刻停止本次迴圈迭代,重新開始下次迴圈迭代。

    break 語句

    中斷當前迴圈。

    fallthrough 語句

    如果在一個case執行完後,繼續執行下麵的case,需要使用fallthrough(貫穿)關鍵字。
  19. 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

    !=

    比較兩個字元串是否不相等。

  20. 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)")
  21. 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)")
    }

    合併數組:我們可以使用加法操作符(+)來合併兩種已存在的相同類型數組。新數組的數據類型會從兩個數組的數據類型中               推斷出來。
    Count屬性:可以使用count屬性來計算數組元素個數;

    isEmpty屬性:可以通過只讀屬性 isEmpty 來判斷數組是否為空,返回布爾值;

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 關於hibernate純sql查詢返回結果集問題(hbm.xml中不寫多表關聯),hibernate查詢綁定結果集 ...
  • 在一些有N個元素的集合應用問題中,我們通常是在開始時讓每個元素構成一個單元素的集合,然後按一定順序將屬於同一組的元素所在的集合合併,其間要反覆查找一個元素在哪個集合中。 如果n比較大,那麼反覆詢問你某個元素所在集合,你該怎麼做? 如果每次都遍歷,那麼顯然會超時,那麼用一些數據結構比如建樹什麼的,很可 ...
  • 在讀本文之前,請先閱讀 LCD1602 的 datasheet(百度到處都是) ,熟悉有關的11條指令集。 LCD1602的11個指令集鏈接 http://www.cnblogs.com/aslmer/p/5801363.html(這是我總結的11條指令集,中英文結合) 1、LCD1602基礎知識 ...
  • C 預處理器不是編譯器的組成部分,是編譯過程中一個單獨的步驟。C預處理器只是一個文本替換工具,它會指示編譯器在實際編譯之前完成所需的預處理。 所有的預處理器命令都是以井號(#)開頭。它必須是第一個非空字元,為了增強可讀性,預處理器指令應從第一列開始。 下表包含所有重要的預處理器指令: 指令 描述 # ...
  •  Django 中的 csrf_token 與單元測試 在 "《Python Web開發:測試驅動方法》" 一書中作者使用的 Django 版本是 1.7,而我使用的是1.9.7版(官網已經更新到1.10了)。這就導致書中給出的代碼可能有“過時”的部分。 比如,下麵是第三章一個單元測試 的代碼,運 ...
  • 題目描述有以下幾個問題:1 給定正整數 求方程 的最小非負整數解。2 給定正整數 求方程 的最小非負整數解。3 給定正整數 求方程 在模 意義下解的數量。4 給定正整數 求 的值。其中 是歐拉函數, 是莫比烏斯函數。輸入格式輸入文件共四行,按上述描述中四個問題的順序,給出每個問題。第一行三個正整數 ... ...
  • 初衷:本人初學SpringMVC的時候遇到各種稀奇古怪的問題,網上各種技術論壇上的帖子又參差不齊,難以一步到位達到配置好的效果,這裡我將我配置的總結寫到這裡供大家初學SpringMVC的同僚們共同學習使用! ...
  • 因為打算全屏顯示一個對話框,而對話框內有幾個QLabel的尺寸要在確定QLabel可用的最大尺寸後,再根據內容調整一次,所以在對話框構造函數內就想確定QLabel的最大尺寸,但因為QWidget::updateGeometry()和QWidget::update()都只能用於可見的控制項,所以如何在控 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...