SWIFT“应解码 Dictionary<String, Any>,但找到了一个数组。”,underlyingError: nil))
Posted
技术标签:
【中文标题】SWIFT“应解码 Dictionary<String, Any>,但找到了一个数组。”,underlyingError: nil))【英文标题】:SWIFT "Expected to decode Dictionary<String, Any> but found an array instead.", underlyingError: nil)) 【发布时间】:2020-11-18 12:12:25 【问题描述】:这是我的第一次问题。 我以为我做的一切都是正确的。我的模型建错了吗?我不确定如何解决此错误。 这是我的代码,在正确的模型之后我想将数据传递给表:
func createJSON()
if let url = URL(string: "https://newsapi.org/v2/everything?q=apple&from=2020-11-15&to=2020-11-15&sortBy=popularity&apiKey=c5722efe6e65432fb5c116d3e1403dca")
let session = URLSession(configuration: .default)
let task = session.dataTask(with: url) (data, response, error) in
guard let data = data, error == nil else return
var result: NewsResult?
do
result = try JSONDecoder().decode(NewsResult.self, from: data)
catch
print("error masage: \(error)")
guard let finalResult = result else return
print(finalResult.status)
print(finalResult.totalResults)
// print(finalResult.articles)
// let newNews = finalResult.artiscles
// self.newsApple.append(contentsOf: newNews)
DispatchQueue.main.async
self.tableView.reloadData()
task.resume()
// MARK: - Model Data Source
struct NewsResult:Codable
let status: String
let totalResults: Int // totalResults
let articles: [articles]
struct articles:Codable
let author: String // articles[0].author
let title: String
let description: String
let url:String
let urlToImage:String
let publishedAt: String
let content: String
【问题讨论】:
【参考方案1】:您编写的模型代码未与 JSON 结果正确映射。尝试用以下代码替换您的模型结构:
struct NewsResult: Codable
var status: String?
var totalResults: Int?
var articles: [Article]?
struct Article: Codable
var source: Source?
var author: String?
var title: String?
var articleDescription: String?
var url: String?
var urlToImage: String?
var publishedAt: String?
var content: String?
struct Source: Codable
var id : String?
var name: String?
【讨论】:
@Sebastian 如果这对您有用,请接受答案,以便在遇到类似问题时对其他人有所帮助。 "感谢您的反馈!声望低于 15 人的投票将被记录,但不要更改公开显示的帖子得分" 好的,知道了!您也可以通过为答案添加对勾标记将其标记为正确答案。以上是关于SWIFT“应解码 Dictionary<String, Any>,但找到了一个数组。”,underlyingError: nil))的主要内容,如果未能解决你的问题,请参考以下文章