如何快速将 json 附加到我的数组中

Posted

技术标签:

【中文标题】如何快速将 json 附加到我的数组中【英文标题】:How can I append json to my array in swift 【发布时间】:2018-07-16 12:37:42 【问题描述】:
let url = URL(string: "https://api.letsbuildthatapp.com/jsondecodable/courses")
    URLSession.shared.dataTask(with: url!)  (data, response, err) in
        guard let data = data else  return 
        do 
            let appData = try JSONDecoder().decode([App].self, from: data)
            print(appData)

         catch let err 
            print("Err", err)
        

    .resume()

这就是我解析 json 的方式。但我想将这些解析的数据添加到我的数组中以使用它来填充 mytableview。

struct App: Decodable 
    var id: Int
    var name: String


var apps = [App]()

这是我在控制台中打印 appData 后得到的。

[CustomTableView.App(id: 1, name: "Instagram Firebase"), CustomTableView.App(id: 2, name: "播客课程"), CustomTableView.App(id: 3, name: "中级训练核心数据"), CustomTableView.App(id: 4, name: "Kindle 基础培训")]

你能帮我理解这个概念吗,因为我是 ios 新手,为了找到答案,我进行了很多搜索。非常感谢你

这是我的全部代码

【问题讨论】:

apps.append(contentOf: appData) 就在print(appData) 之后?但是您可能还想执行tableViewreloadData(),并在主线程中执行此操作。 你要知道json解析的基础知识就到这里了,看完你就明白了developer.apple.com/swift/blog/?id=37 非常感谢您的回答。我将搜索更多以学习基础知识 【参考方案1】:

你需要这样做

DispatchQueue.main.async 
    self.apps = appData
    self.tableView.reloadData()

DispatchQueue.main.async 
    self.apps.append(contentsOf:appData)
    self.tableView.reloadData()

【讨论】:

非常感谢您的详细回答。我解决了问题【参考方案2】:

添加:

self.apps = appData

就在print(appData)下方

【讨论】:

以上是关于如何快速将 json 附加到我的数组中的主要内容,如果未能解决你的问题,请参考以下文章

解析 JSON 数据时无法将字符串附加到数组

使用 postgres 9.4 将 JSON 元素附加到数组

如何出于 JSON 原因将元素附加到 C# 数组?

如何将手动数据附加到struct Codable数组?

如何将 html 附加到我的 QWebEngineView

如何将 CodenameOne 源附加到我的项目?