2016-12-20 4 views
1

Ich arbeite die folgenden JSON-Datei in Swift empfangen und ich kann nicht herausfinden, wie die Details Elemente in der JSON erhaltenGet JSON Element swift

[ 
    { 
    "id": 143369, 
    "history": "jd2", 
    "details": [ 
     { 
     "name": "Su 1", 
     "color": "#ffffff" 
     }, 
     { 
     "name": "Stu 1", 
     "color": "#ffffff" 
     } 
    ] 
    }, 
    { 
    "id": 143369, 
    "history": "musa 2", 
    "details": [ 
     { 
     "name": "Stu 1", 
     "color": "#ffffff" 
     }, 
     { 
     "name": "Stu 2", 
     "color": "#ffffff" 
     } 
    ] 
    } 
] 

ich diese Klasse erstellt haben, mit dem ich bin in der Lage ID abrufen und Geschichte, aber nicht die Details. Wie füge ich die Details mit der ID und dem Verlauf hinzu?

public class students { 

    let id: Int32 
    let history: String? 

    init(id:Int32, history:String) { 
     self.id = id 
     self.history = name 

    } 
} 

Unten ist mein Web-Service-Code.

var dataArray = [students]() 

    Alamofire.request(.GET, url) 
     .responseJSON { response in 

      if let value: AnyObject = response.result.value { 

       let json = JSON(value) 
       if let items = json.array { 
        for item in items { 
          self.dataArray.append(students(
          id: item["id"].int32!, 
          history: item["history"].string!)) 

          let cItems = item["details"].array 
           for citem in citems { 
            //here 
           } 
        } 
       } 
      } 
    } 
+0

Möchten Sie [Object Mapper] (https://github.com/Hearst-DD/ObjectMapper) verwenden? Wenn ja, dann kann ich eine Antwort posten –

Antwort

1

Ihr Studentenmodell sollte so sein.

let id: Int32 
let history: String? 
let details: Array<[String:AnyObject]> 
init(id:Int32, history:String,details:Array<[String:AnyObject]>) { 
    self.id = id 
    self.history = name 
    self.details= details //need a cast here! 
} 

hier ist ein einfacher Parser für i für ein Projekt verwendet, um Ihre Array < zu werfen [String: ANYOBJECT]> wie Sie

func collection(data:[[String:AnyObject]]) -> [yourModel] { 

     var objectArray: [yourModel] = [] 

     for d in data { 

      let obj = yourModel(data: d as [String: AnyObject]) // i created a initializer for this object here on my project. 

      objectArray.append(obj) 

     } 

     return objectArray 

} 

Hoffnung eine Idee gibt!

+0

Danke, ich bin wirklich neu und bin mir nicht sicher, wie ich diesen Code mit meinem bestehenden Code verwenden soll. – John