【发布时间】:2022-01-16 02:35:39
【问题描述】:
我几乎是 Swift 的初学者。我已经玩过 SwiftUI 了,但仅此而已。不用说,我不知道类、结构、协议和其他一切在 Swift 中是如何工作的。
我目前正试图弄清楚如何将 JSON 文件加载到 Swift 中,但我一辈子都无法让它工作。我认为这样的东西对于这样一种现代语言来说是相当初级的,但显然不是。在尝试了多个教程和示例之后,我想出了这个凌乱的代码:
public class JSONReader {
struct DatabaseObject: Decodable {
let name: String
let books: AnyObject
let memoryVerses: AnyObject
}
private func parse(jsonData: Data) {
do {
let decodedData = try JSONDecoder().decode(DatabaseObject.self, from: jsonData)
print(decodedData)
} catch {
print("decode error")
}
}
private func loadJson(fromURLString urlString: String,
completion: @escaping (Result<Data, Error>) -> Void) {
if let url = URL(string: urlString) {
let urlSession = URLSession(configuration: .default).dataTask(with: url) { (data, response, error) in
if let error = error {
completion(.failure(error))
}
if let data = data {
completion(.success(data))
}
}
urlSession.resume()
}
}
init() {
loadJson(fromURLString: "Redacted for privacy") { result in
switch result {
case .success(let data):
self.parse(jsonData: data)
case .failure(let error):
print(error)
}
}
}
}
我不断收到构建时错误Type 'JSONReader.DatabaseObject' does not conform to protocol 'Decodable'
任何帮助、指示或提示将不胜感激!
【问题讨论】:
-
如果您询问有关解析 JSON 的问题,最好包含一个包含您打算解析的 JSON 示例的块。这样我们就可以引导您找到适合您数据的数据结构。