ios - 为什么对象不会附加到数组中?
问题描述
class NetworkManager{
var articleList = [Article]()
func downloadJsonData() -> Void{
let jsonUrl = "someUrl"
guard let url = URL(string: jsonUrl) else { return }
URLSession.shared.dataTask(with: url) { data, response, err in
//check err
//check response status
guard let data = data else { return }
do{
let apiResults = try JSONDecoder().decode(ApiResults.self, from: data)
//article list remains empty
self.articleList = apiResults.articles
} catch let err{
print(err)
}
}.resume()
}
}
我也尝试使用 for 循环附加到数组中,但这也不起作用。任何帮助将不胜感激。
解决方案
我要检查的第一件事是返回的数据是否正确。
是保护块触发返回还是数据正常?
JSON 是否能够正确解码响应?
是否articles
在apiResults
对象中填充。
接下来的事情是你不是试图将内容附加apiResults.articles
到你的列表中,而是让你的列表变成原来的样子apiResults.articles
。
尝试以下操作,看看它是如何运行的:
class NetworkManager{
// better declaration syntax
var articleList: [Article] = []
func downloadJsonData() {
let jsonUrl = "https://newsapi.org/v2/everything?sources=nfl-news&apiKey=mykey"
guard let url = URL(string: jsonUrl) else { return }
URLSession.shared.dataTask(with: url) { data, response, err in
//check err
//check response status
guard let data = data else { return }
do{
let apiResults = try JSONDecoder().decode(ApiResults.self, from: data)
//article list remains empty
//appends contents instead of assignment
self.articleList.append(contentsOf: apiResults.articles)
} catch let err{
print(err)
}
}.resume()
}
}
推荐阅读
- git - Git 分支显示已删除的远程分支
- javascript - 如何从 vanilla js 文件访问 $dispatch 和 Alpinejs 的其他神奇属性?
- reactjs - 使用 React + TS + Storybook + Rollup 制作包问题
- python - Flask:如何清楚地显示数据库中的数据
- android - java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution
- android - Android:我如何在 jetpack compose 中使用片段进行底部导航
- c# - 异常和消息框
- sql - 将行转换为列 SQL 查询
- scala - 在火花中使用带有 toCharArray 的 flatMap 时找不到 Encode[Char]
- python - 使用自动生成的密码自动填充 Django 注册页面