用Alamofire進行網絡請求

bb225 9年前發布 | 1K 次閱讀 C/C++

        /*

        向服務器發送請求:

        request實際上有四個參數,但是后兩個參數都設定為了默認值,所以在調用的時候只要初始化前兩個參數就可以。

        第一個參數是設定向服務器發起的請求的方法,通常為GET方法和POST方法。

        第二個參數就是URL地址。

        第三個參數是填寫一些必要的信息,比如說使用密鑰。

        該方法返回一個Alamofire.Request對象



        responseJSON方法有一個必包作為參數。這個必包有四個參數,沒有返回值。但是responseJSON有一個Alamofire.request的返回值。這個返回值可以不使用。

        下面的responseJSON的寫法是閉包Trailing。

        參數列表實際上是一個元組,所以,不關心的元素,可以用下劃線忽略掉。



        問題:如何實現網絡請求完成后跳用responseJSON()方法?

    */

    Alamofire.request(.GET, "https://api.500px.com/v1/photos", parameters:["consumer_key": str]).responseJSON() {

        (_, _, JSON, _) in

        let photoInfos = (

            JSON?.valueForKey("photos") as [NSDictionary]

            ).filter({

                /*

                    filter是一個數組的過濾函數,它有一個閉包參數。閉包參數有一個任意類型的參數,并返回一個bool值。當bool值為真時,將對應的數組的元素存放到一個新數組中。



                    這個過濾條件可以解讀為,一個元素為字典的數組調用filter方法,將字典中key為“nsfw”的值為false的字典保存到新的數組中。

                */

                    ($0["nsfw"] as Bool) == false

            }).map(){

                /*

                    map函數是數組的一個函數,對于每個數組中的元素進行處理。它有一個返回值為任意類型的閉包。它的返回值是一個任意類型的數組。



                    在這個例子里,閉包的方法是把字典的id和image_url關鍵字的值對PhotoInfo進行初始化,并生成一個PhotoInfo的對象數組。

                */

                PhotoInfo(

                    id: $0["id"] as Int, url: $0["image_url"] as String

                )

            }



    }


</pre>

 本文由用戶 bb225 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!