通過Alamofire獲取數據--老鎮豆瓣電臺學習總結

由于老鎮的課程是2015年4月份的了,現在最新版Alamofire獲取JSON數據的方法已經改變.我在http://stackoverflow.com 上找到了類似問題的解決方法,如果有朋友在學習中遇到這個問題的可以參考我這里寫的代碼.
  老鎮的代碼:

import UIKit

class HTTPController:NSObject {
    //定義一個代理
    var delegate:HttpProtocol?
    //接受網址,回調代理的方法,傳回數據
    func onSearch(url:String) {
        Alamofire.manager.request(Method.GET, url).responseJSON(options: NSJSONReadingOptions.MutableContainers) { (_,_,data,error) -> Void in
                self.delegate?.didRecieveResults(data!)
        }
    }
}


//定義HTTP協議
protocol HttpProtocol {
    //定義一個方法,接受一個參數:AnyObject
    func didRecieveResults(results:AnyObject)
}

我的代碼:

import UIKit
import Alamofire

class HTTPController:NSObject {
    //定義一個代理
    var delegate:HttpProtocol?
    //接受網址,回調代理的方法,傳回數據
    func onSearch(url:String) {
        Alamofire.request(Method.GET, url).responseJSON(options: NSJSONReadingOptions.MutableContainers) { (data) -> Void in
            if let DATA = data.result.value {
                self.delegate?.didRecieveResults(DATA)
            } else {
                print("DATA獲取失敗")
            }
            
        }
    }
}


//定義HTTP協議
protocol HttpProtocol {
    //定義一個方法,接受一個參數:AnyObject
    func didRecieveResults(results:AnyObject)
}

注意:
1.此處要import Alamofire導入Alamofire.
2.新版的Alamofire去掉了.manager,我們直接用Alamofire.request(Method.GET, url)進行數據請求即可
3.responseJSON后面的閉包現在只需要一個參數
4.獲取data數據后要對其進行AnyObject類型的轉換,所以用到了if let函數

不知道是不是Alamofire的問題,我們的很多頻道里只有一首歌.有的朋友說用AFNetworing庫可以解決這個問題,我還沒有嘗試.希望有了解決頻道列表只有一首歌的朋友可以留言分享一下解決方案.

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

推薦閱讀更多精彩內容