Swift 2 - 如何从Alamofire.responseJSON获取数据

时间:2015-12-02 18:03:26

标签: ios swift api alamofire swifty-json

我正在阅读Design + Code课程,我有2个文件:

  1. DNService.swift
  2. StoriesTableViewController.swift
  3. 形成DNS服务我从DesignerNews API加载数据,这是获取数据的函数:

    static func storiesForSection(section: String, page: Int, response: (JSON) ->()) {
    
        let urlString = baseURL + ResourcePath.Stories.description + "/" + section
        let parameters = [
            "page": String(page),
            "client_id": clientID
        ]
    
    
    
        Alamofire.request(.GET, urlString, parameters: parameters).responseJSON { (response) -> Void in
            let swiftyData = JSON(response.result.value ?? [])
            //print(swiftyData)
        }
    
    
    }
    

    StoriesTableViewController中,我调用了函数storiesForSection(),但它无法检索数据:

    var stories: JSON! = []
    
    func loadStories(section: String, page: Int) {
        DNService.storiesForSection(section, page: page) { (JSON) -> () in
            self.stories = JSON["stories"]
            self.tableView.reloadData()
        }
    }
    

    我不知道如何填充self.stories中的StoriesTableViewcontroller ...

    我尝试将swiftyData存储在一个DNS服务变量中,并在getStoredSwiftyData()中生成StoriesTableViewCtler,但它也不起作用。

2 个答案:

答案 0 :(得分:1)

storiesForSection:page:response有一个回调函数,只需用JSON对象作为参数调用它。

Alamofire.request(.GET, urlString, parameters: parameters).responseJSON { (response) -> Void in
    let swiftyData = JSON(response.result.value ?? [])
    response(swiftyData)
}

答案 1 :(得分:0)

   //Swift4
   import Alamofire

//仅从.get方法获取数据获取数据后,您可以将其转换为合适的格式

   let url2:URL=URL(string: values)!
    Alamofire.request(url2).response 
     { response in
        if(response.data != nil)
          {

           }
          else{
            print(response.error)

               }
 }