Alamofire 4.0 和 Swfit 3 的字典

Posted

技术标签:

【中文标题】Alamofire 4.0 和 Swfit 3 的字典【英文标题】:Dictionaries with Alamofire 4.0 and Swfit 3 【发布时间】:2017-07-19 03:49:11 【问题描述】:

我正在使用这段代码,当我打印(jsonResponse["data"]) 时,我非常快速轻松地从我的 API 收到返回。

但在第一个循环中我有一个无限循环。由于我的 API 的返回,我需要执行此循环。

有人可以帮助我吗?我正在使用相同的代码来获取课程数据并填充表格视图及其工作......但现在这个课程不适用于学校,我的 API 收到相同的结构:

SWIFT 代码:

func findSchools()
    let parameters: Parameters = [:]

    let headers: HTTPHeaders = [
        "ContentType": "application/json"
    ]

    API.consultAPI(headers: headers, type: .get, parameters: parameters, endpoint: "schools", completionSuccess:  (response) in

        if let responseValue: AnyObject = response.result.value as AnyObject? 
            let jsonResponse = JSON(responseValue)
            print(jsonResponse["data"])
            for (_, data) in jsonResponse["data"]
                print(data)

                if data["id"] != nil && data["name"] != nil
                    let school = School(id: data["id"].int!, name: data["name"].string!)
                    self.arraySchools.append(school)
                

            
        
        print(self.arraySchools)

    , completionFailure: (response) in
        if let responseValue: AnyObject = response.result.value as AnyObject? 
            let jsonResponse = JSON(responseValue)
            print(jsonResponse)
            AlertView.showAlert(view: self, message: "Error")
        
    )

API 返回:

  
"data":  

 "0":  
     "id":793,
     "name":"1",
     "default":false
  ,

 "1":  
     "id":3,
     "name":"2",
     "default":false
  ,

  "2":  
     "id":792,
     "name":"28",
     "default":false
  ,
  "3":  
     "id":5,
     "name":"3",
     "default":false
  ,
  "4":  
     "id":9,
     "name":"6",
     "default":false
  ,
  "5":  
     "id":795,
     "name":"793",
     "default":false
  ,
  "6":  
     "id":11,
     "name":"8",
     "default":false
  ,
  "7":  
     "id":4,
     "name":"aasdasdasd",
     "default":false
  ,
  "8":  
     "id":23,
     "name":"Abbotsleigh",
     "default":true
  ,
  "9":  
     "id":24,
     "name":"Academies Australiasia",
     "default":true
  ,
  "10":  
     "id":785,
     "name":"Acme labs",
     "default":false
  ,
  "11":  
     "id":25,
     "name":"Airds High School",
     "default":true
  ,
  "12":  
     "id":26,
     "name":"Al  Amanah College",
     "default":true
  ,
  "13":  
     "id":27,
     "name":"Albion Park High School",
     "default":true
  
,

"links":[  

]

【问题讨论】:

【参考方案1】:

在代码中添加 .dictionaryValue 现在它正在工作(没有无限循环):

 for (_, data) in jsonResponse["data"].dictionaryValue
    if data["id"] != nil && data["name"] != nil
      let school = School(id: data["id"].int!, name: data["name"].string!)
           self.arraySchools.append(school)
    
 

【讨论】:

以上是关于Alamofire 4.0 和 Swfit 3 的字典的主要内容,如果未能解决你的问题,请参考以下文章

如何使用参数 swift 3.0 Alamofire 4.0 调用邮政服务?

使用 Swift 3 的 Alamofire 4.0 出现“没有成员”错误

Alamofire 4.0 / Swift 3.0 - 附加多部分表单数据(CSV 文件)

在 Swift 3.0 (Alamofire 4.4.0) 中的一些请求后,Alamofire 停止工作

Alamofire 4.0:timeoutIntervalForRequest

Xcode 8.3.2 不适用于 Alamofire 4.4.0