2017-07-19 62 views
0

我使用這段代碼,並在行時打印(jsonResponse [「data」]),我很快又容易地從API中收到返回。Alamofire 4.0和Swfit 3的字典

但是在第一個循環中,我有一個無限循環。我需要做這個循環,因爲我的API返回。

任何人都可以幫到我嗎?我使用相同的代碼來獲取課程資料和填充的tableview及其工作......但現在這一類的不是學校工作,我收到了我的API相同的結構:

SWIFT CODE:

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":[ 

] 
} 

回答

0

添加.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) 
    } 
}