【发布时间】:2017-03-22 03:31:06
【问题描述】:
所以我有这个对象:
class Messages: NSObject {
var id: String?
var date: String?
var text: String?
}
我正在使用 URLSession 解析数据,然后我想创建一个数组来在其中添加消息。问题是当我打印 messages.id 或 messages.text 时,我可以看到数据,但是当我将它们附加到数组中时:messagesSet = [Messages]() 并打印数组的文本时,我得到类似 [] 的内容。
下面是解析数据的代码:
//Initiate Getting Messages
func getMessages(url: URL, completion: @escaping DownloadComplete) {
let dataTask = URLSession.shared.dataTask(with: url) {
(data, response, error) in
self.didFetchMessages(data: data, response: response!, error: error, completion: completion)
}
dataTask.resume()
}
//Callback for URLSession for getMessages
private func didFetchMessages(data: Data?, response: URLResponse, error: Error?, completion: @escaping DownloadComplete) {
do {
let jsonData = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String: Any]
guard let messageList = jsonData["messages"] as? [Any] else {
completion(nil, false)
return
}
for messageInfo in messageList {
let message = Messages()
guard let info = messageInfo as? [String:Any] else {
completion(nil, false)
return
}
if let id = info["id"] as? String {
message.id = id
}
if let date = info["date"] as? String {
message.date = date
}
if let text = info["text"] as? String {
message.text = text
}
messagesSet.append(message)
print(messagesSet)
}
completion(messagesSet, true)
} catch let error {
print("Decoding error \(error)")
}
}
感谢您的帮助。我希望这些信息足以找到解决此问题的方法。
这是 JSON 响应:
{
"messages": [
{
"id": "4323",
"date": "07/01/17 23:22",
"text": "This is a test message"
},
{
"id": "4324",
"date": "07/01/17 23:23",
"text": "This is a test message 2"
},
{
"id": "4326",
"date": "07/01/17 23:25",
"text": "This is a test message3"
}
]
}
【问题讨论】:
-
能否包含一个您正在解析的示例 JSON 文件?更好的是,一个展示问题的游乐场。
-
stackoverflow.com/questions/41734982/…JSON Parsing 被千题提及
-
@kkoltzau 你也得到了 JSON 文件
-
@UmairAfzal 这对我没有帮助:/
-
@PavlosNicolaou 请检查我的回答