通过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库可以解决这个问题,我还没有尝试.希望有了解决频道列表只有一首歌的朋友可以留言分享一下解决方案.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容