2017-12-04 17 views
0

は私のODATA応答である:ここではSwiftyJson解析ODATA応答

{ 
    "odata.metadata":"http://url.com/odata/$metadata#Updates","value":[ 
    { 
     "ID":1,"msgTitle":"Testing","reportedBy":"testUser" 
    } 

    ] 
} 

は私スウィフトコードです:

Alamofire.request(URL, method: .get).responseString { (responseData) -> Void in 
      if((responseData.result.value) != nil) { 
       self.activityIndicator.stopAnimating() 
       let swiftyJsonVar = JSON(responseData.result.value!) 
       print(swiftyJsonVar) 
       if let resData = swiftyJsonVar["value"].arrayObject { 
        if let dict = resData as? [Dictionary<String, AnyObject>] { 
         for obj in dict { 
          let announce = announcement(fileDict: obj) 
          self.Announcements.append(announce) 
         } 

         self.tableView.reloadData() 
         self.tableView.isHidden = false 
        } 
       } 
      } 
     } 

問題は、resDataがnullを返すことです。値の配列内でJSONを取得するのは間違っていますか?

また、swiftyJsonVar [0] ["value"] arrayObjectを成功させました。 swiftyJSONのマニュアルを相談した後、私は次の構文を使用して、これを理解することができた

答えて

0

Alamofire.request(URL, method: .get).responseString { (responseData) -> Void in 
      if((responseData.result.value) != nil) { 
       self.activityIndicator.stopAnimating() 
       //log.info("Response: \(responseData.result.value)") 
       let jsonObj = responseData.result.value! 
       if let dataFromString = jsonObj.data(using: .utf8, allowLossyConversion: false) { 
        let json = JSON(data: dataFromString) 
        print(json) 
        if let resData = json["value"].arrayObject { 
         if let dict = resData as? [Dictionary<String, AnyObject>] { 
          for obj in dict { 
           let announce = announcement(fileDict: obj) 
           self.Announcements.append(announce) 
          } 

          self.tableView.reloadData() 
          self.tableView.isHidden = false 
         } 
        } 
       } 
      } 
     }