2016-04-20 16 views
-1

Swiftを使用してiOSアプリケーション内に情報を表示するためにWeb APIを使用しています。私はSwiftyJSONのAPIを使用して、スウィフト内でこのような何かを解析する方法を疑問に思う:SwiftでのJSON配列の解析

[ 
    { 
     "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" 
    } 
] 

現在スウィフトコード:

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() 

} 

感謝を!

+0

現在のコードで何が問題になっていますか? – miken32

答えて

0

JSONは辞書の配列です。したがって、その配列をループする必要があります。

このコードは実行していません。いくつかの微調整が必​​要な場合があります。

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

エラーを取り除くためにいくつかの変更を加えてコードに書き出すと「JSONから関連のないタイプ[[String:String]]に常にキャストする」というメッセージが表示されますが、これを修正するにはどうすればよいですか? –

+0

キャストを取り除きます。 'のように取り除く! [[String:String]] ' – ryantxr

関連する問題