I'm working with a web API to display information within an iOS application using Swift. Wondering how I can parse something like this inside Swift, using the SwiftyJSON API:
[
{
"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()
}
Thanks!
The JSON is an array of dictionaries. Therefore, you have to loop through that array.
Please note, I did not run this code. It might need some tweaking.
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
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.