【发布时间】:2019-07-16 08:34:54
【问题描述】:
我有一个 Firebase 的答案,格式如下:
["allNews": <__NSArrayM 0x6000015f06c0>(
{
createDate = "21.02.19";
creator = "lol@gmail.com";
creatorImageURL = "<null>";
creatorUID = kzorlyIOI3RgEjCV1XDLQUhu5CS2;
newsImageURL = "";
text = "Daft g s dfg ";
title = "Test ";
},
{
createDate = "21.02.19";
creator = "plol2@gmail.com";
creatorImageURL = "<null>";
creatorUID = Tw1JzFzcVbelRUA7GoFZ9CIWIwr1;
newsImageURL = "";
text = Vcbccvbvb;
title = hdbdvbccfb;
}
)
]
如何通过 Codable 协议解析它?
下面是我的代码:
struct AllNews: Codable {
var allNews: [DetailNews]
}
struct DetailNews: Codable {
var creator: String
var creatorUID: String
var title: String
var text: String
var createDate: String
var creatorImageURL: String
var newsImageURL: String
}
这就是我解析数据的方式
guard let newsData = try? JSONSerialization.data(withJSONObject: document.data(), options: []) else { return }
let decodeJSON = JSONDecoder()
let allNews = try? decodeJSON.decode([DetailNews].self, from: newsData)
print(allNews)
但是 allNews 仍然为零,尽管新闻数据以 json 的形式出现在我这里,并附在上面
【问题讨论】:
-
您在这里收到的错误信息是什么?还要添加使用 JSON 解码器解析的代码
-
在此处粘贴您的 JSON,它会尝试为您执行此操作 app.quicktype.io/?l=swift
-
creatorImageURL 和 newsImageURL 需要是可选的
String? -
永远不要忽略
Decoding错误。catch错误,阅读描述性错误信息并立即修复。 -
按照我在答案中所做的那样捕获错误并发布其输出