2016-04-20 8 views
-1

Ich arbeite mit einer Web-API, um Informationen in einer iOS-Anwendung mit Swift anzuzeigen. Sie fragen sich, wie ich so etwas wie dies innerhalb Swift analysieren kann, mit der SwiftyJSON API:Analysieren von JSON-Arrays in Swift

[ 
    { 
     "messageID":"7140af4b-3751-38f7-9f34-0f66fab37ad4", 
     "messageContent":"{RETRACTED}", 
     "messageTimestamp":"7:39:00 PM EDT on 4/19/2016", 
     "messageSender":"805a6c70-db41-3218-a885-54a540a31dd0", 
     "programTimestamp":"2016-04-19 19:39:00" 
    }, 
    { 
     "messageID":"209c052f-d265-340b-8f76-efa69ea2b17e", 
     "messageContent":"{RETRACTED}", 
     "messageTimestamp":"3:02:10 PM EDT on 4/18/2016", 
     "messageSender":"805a6c70-db41-3218-a885-54a540a31dd0", 
     "programTimestamp":"2016-04-18 15:02:10" 
    } 
] 

Current Swift Code:

func loadAllMessages() { 
    let baseURL = "{RETRACTED}"; 
    let url = NSURL(string: baseURL); 
    let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration()); 
    let task = session.dataTaskWithURL(url!) { (data, response, error) -> Void in 
     if (error == nil) { 
      let swiftyJSON = JSON(data: data!); 
      let message = Message() 
      message.setMessageContent(swiftyJSON["messageContent"].stringValue) 
      message.setMessageSender(swiftyJSON["messageSender"].stringValue) 
      message.setMessageTimestamp(swiftyJSON["messageTimestamp"].stringValue) 
      self.finishLoadingMessage(message.getMessageSender(), message: message) 
     } else { 
      print ("An unexpected error occurred. Check the baseURL."); 
     } 
    } 
    task.resume() 

} 

Dank!

+0

Was ist falsch an Ihrem aktuellen Code? – miken32

Antwort

0

Der JSON ist ein Array von Wörterbüchern. Daher müssen Sie das Array durchlaufen.

Bitte beachten Sie, dass ich diesen Code nicht ausgeführt habe. Es könnte etwas Feinabstimmung nötig sein.

if error == nil { 
    if let data = data { 
     let swiftyJSON = JSON(data: data) 
     for (index, row): (String, JSON) in swiftyJSON { 
      let message = Message() 
      message.setMessageContent(row["messageContent"].stringValue) 
      message.setMessageSender(row["messageSender"].stringValue) 
      message.setMessageTimestamp(row["messageTimestamp"].stringValue) 
      self.finishLoadingMessage(message.getMessageSender(), message: message) 
     } 
    } 
    else { 
     // data should not be nil 
     // put error handling here 
    } 
} 
else { 
    // some error occurred 
} 
+0

Setzen Sie das in meinen Code (mit einigen Modifikationen, um Fehler zu entfernen) sagt "Cast von 'JSON' zu nicht verwandten Typ '[[String: String]]' immer fehlschlägt", was sollte getan werden, um dies zu beheben? –

+0

Entfernen Sie den Gipsverband. Befreie 'as! [[String: String]] ' – ryantxr

Verwandte Themen