學習Swift第一步,為什么要學習Swift

最近隨著蘋果的春季發布會到來,iOS9.3系統的更新,Swift2.2的更新也隨之到來,Swift自發行以來,就伴隨著很多評價,簡介,方便開發,完全免費,開源,綜合C,OC,Java等多門語言的優劣篩選產生的一門計算機語言。

如今Swift語言從發行至今也有近兩年時間,在兩年里也在不斷的完善,更新,而且當下也有不少軟件是通過純Swift語言來編寫的,而且他有一個很大的好處就是開源,對于程序員來說這個好處絕對是最有誘惑力的,為什么git能有這么多程序員的支持,就是因為他給了一個代碼平臺,讓大家的代碼開源從別人那里學到知識。同時它既嚴謹又開放,有自己的原則,同時使用起來也非常的靈活。

在這里我也是分享一下最近接觸并學習Swift語言的一些知識。

先分享兩個好的學習網站慕課網 極客學院

首先說下Swift和OC的區別,在工程上OC是分為.h和.m文件的,一個聲明文件,一個實現文件,而在Swift工程中只有一個文件,就是.Swift文件,聲明,導入文件都在這一個文件夾里來操作的。導入 不需要再到類名 所有類名都是公開的 可以直接訪問到
導入框架: 直接導入框架名 如 import UIKit
OC程序入口是main函數
swift代碼是從上往下執行 @UIApplicationMain 程序的入口
class 是用來聲明類的 class后面是類名 冒號后面是繼承的父類
導入協議或者代理的時候直接在父類的后面加逗號和代理或協議的名字。
例如

class AppDelegate: UIResponder, UIApplicationDelegate{
}

另外如果我們要聲明一個變量,在OC里面都是類名 對象名,然后進行復制,在Swift中所有的變量都用var來定義,所有的常量都用let定義,公式為

var 名字 :數據類型 =值

值得一提的是,Swift中是支持中文編碼格式的,甚至你還可以把對象名命名為表情,比如

    let ??:String = "hello world"
    print(?? + "可以和海綿寶寶做朋友嗎")
//Swift中可以直接用+來拼接字符串

這就是說為什么這門語言很開放,但是我們如果這樣寫

    let ??:NSString = "hello world"
    print(?? + "可以和海綿寶寶做朋友嗎")

他就會說,??的類型和"內容"類型不同,不能進行拼接,你必須把它轉化成String類型才能進行拼接,在Swift中類型一定要精確,否則他就會提示報錯,而且,寫法一定要正規,多一個空格少一個空格他都會給你莫名的報錯。

另外在Swift中一段代碼的結束可以不用;結尾,但是一行如果有多句代碼要用;來隔開,其實加上也是不會報錯的。

還有一點Swift因為現在還不算太完善,如果你在聲明一個變量的時候,在后面并沒有改變他的值,他會提醒你,你可以賦值為常量,但是不要管他,也不會有錯誤的。

在Swift中還有一點很神奇的地方就是,它可以自行推斷數據類型,這在其他所有語言中都是有違背常理的,一個數據的產生必定要隨之伴隨著他的類型,但是在Swift中它卻可以自行推斷數據類型來進行判斷,因為在Swift中加入了幾種新的判斷,例如可選數據類型,明確數據類型,判斷數據類型,就是說你在定義一個數據的時候他還沒有明確的去使用,也可以選擇它的數據類型,所以在這點Swift還是很嚴謹的

let 字符串 = "我是字符串"
print(字符串)
let 年齡 = 12
print(年齡)

我們可以這樣證實一下是不是確實可以自行推斷數據類型

如果聲明變量的時候不想在聲明的時候去賦值 必須填上變量的數據類型 什么都沒給他 沒有推斷的依據 推斷不出

然后我們說一下Swift中方法的聲明和調用
就拿一個APPDelegate里面函數來說明吧

swift:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
return true
}
OC:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    return YES;
}

比較一下Swift里面聲明都是用func來聲明,后面是方法名,接著是一個小括號,無參數就不填內容,有參數就填寫參數類型,順帶提一下Swift里面打mark標記也不同,直接使用//MARK:標題內容來標記,有一點,在Swift中是沒有BOOL類型的,他是純粹的Bool類型,既,是或者非,沒有1,0,YES NO這一說,所以return得都是true或者false

func 方法名 (){
    print("無返回值不帶餐的函數")
}


//MARK:無返回值  代餐
func 有參方法(參數名:NSString)  {
print("你好,我是有殘方法")
}

//MARK:帶參有返回值

func 有參有返回方法(參數名1:String , 參數名2:String) -> String {
return 參數名1 + 參數名2
    
}

無視那些賣萌的錯別字=。=雖然可以用漢語,但是并不提倡這一點,大家定義的時候盡量還是用英文命名。。逼格也高一些。。

然后在程序中調用一下,調用的時候直接是方法名(參數)

    var 參數:NSString = "??"
    有參方法(參數)
    print(有參有返回方法("123", 參數名2:"12344" ))

要注意的是如果你要調用其他類的方法的時候要用.來調用,比如我創建一個UIView的類,在里面寫了個叫視圖方法的方法,需要傳一個字符串的參數進去,那么我調用的時候。

 //快捷創建對象
 //        創建帶有frame的
 //        let view:MyView = MyView(frame:CGRectMake(123,123,123,123))
    let view:MyView = MyView()
    
    view.frame = CGRectMake(123, 123, 123, 123);
    view.backgroundColor = UIColor .redColor()
    print(view .視圖方法("字符串參數"))

    self.view .addSubview(view)

還有一點,在Swift中是提倡使用區間來定義范圍的,在Swift中有全閉合區間,和半閉合區間之分,全閉合即包括區間內所有元素,半閉合區間是由第一個元素到倒數第二個元素。定義的方式也不同
1 2 3 4 5
全閉合區間 1...5//三個點
1 2 3 4 (5)
半閉合區間 1..5//兩個點
在Swift中是提倡使用區間來定義的

let titles = ["標題1" , "標題2" , "標題3"]
for (var i = 0;i < titles.cout; i += 1){
            vc.title = titles[i]
    }

還有一點,Xode7.3之后 ++將在swift3中棄用 改成+=
在做數據類型轉換的時候
swift 不同的數據類型 不允許計算
數據類型轉換 數據類型(要轉換的變量名)

在遍歷的時候大家注意,這點我在學習的時候差點報警,在判斷的時候,比如i < 5,如果i和<中間有空格,則右側也要有空格,如果沒有,就都不要有,不然就會報錯,寫法一定要嚴謹,最好都加上空格,看起來也清晰,另外for循環的條件可以不用加括號,當然加上也沒有錯誤,這點我當時真的是要報警了

暫時先寫這么多,前面網站里面都會有相應的視頻,老師也都很不錯。在這里主要寫一些容易遇到的錯誤等,有空再來寫一下選擇類型。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容