ios - 为什么对象不附加到数组?

标签 ios json swift api parsing

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 循环追加到数组,但也没有用。任何帮助将不胜感激。

最佳答案

我首先要检查的是返回的数据是否正确。

保护 block 触发返回还是数据正常?

JSON 是否能够正确解码响应?

是否填充了 apiResults 对象中的 articles

接下来,您不会尝试将 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()
    }
}

关于ios - 为什么对象不附加到数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51316670/

相关文章:

ios - 如何知道您的应用程序是事件的还是空闲的?

swift - 窗口标题栏出现透明问题(不是真正透明)

ios - `pushViewController:animated:` 带有淡入淡出动画(仅限动画过渡)?

objective-c - 将 subview Controller 推到 UINavigationController 后崩溃

iphone - 从少数国家下载的应用程序中没有 iAd

ios - 基于定时器的带有变量的 if 语句

arrays - 未解析的标识符错误 Swift

ios - "NSArray is not convertible to NSData"错误

javascript - 如何访问嵌套的 json 元素?

ios - 在类中定义的闭包中到达 "self"