arrays - 如何在 Swift 中将元素追加到全局数组(在 for 循环中)?

标签 arrays swift

我有一个空的全局数组。我想做的唯一简单的事情就是向这个数组添加一个元素。很快,这个看似简单的任务就被证明是困难的。我只剩下一个空数组,并且没有任何内容附加到我的全局数组中。

我可以看到它在 for 循环中打印出值。所以这些值实际上就在那里。

这是我在全局声明的一些内容(是的,我知道全局变量不好,但我稍后会解决):

struct HouseDetails: Decodable {
    let median_price: String
    let sale_year: String
    let transaction_count: String
    let type: String
}

var hsArray: [HouseDetails] = []

在 viewDidLoad() 函数中,我将数据存储在局部变量“houses”中。当我循环遍历数组时,它会打印median_price,显示值在那里。

但是,当我执行 hsArray.append(h) 时,它似乎什么也没做。

let jsonUrlString = "https://data.melbourne.vic.gov.au/resource/i8px-csib.json"

    guard let url = URL(string: jsonUrlString)
        else { return }

    URLSession.shared.dataTask(with: url) { (data, response, err) in
        guard let data = data else { return }

        do {
            let houses = try JSONDecoder().decode([HouseDetails].self, from: data)

            for h in houses {
                hsArray.append(h)

                print(h.median_price)

            }

        }
        catch let jsonErr {
            print("Error with json serialization", jsonErr)
        }

        }.resume()

感谢您的帮助。在其他语言中,我习惯于能够将元素附加到现有数组的末尾,因此我确信这只是一个小错误。

最佳答案

首先,你为什么不直接做

hsArray.append(contentsOf: houses)

而不是所有的for循环

for h in houses {
    hsArray.append(h)
    print(h.median_price)    
}

问题可能是您使用 hsArray 的时间。使用hsArray后查看是否收到响应。

关于arrays - 如何在 Swift 中将元素追加到全局数组(在 for 循环中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56258192/

相关文章:

java - 反转数组的方法会导致 StackOverflowError

javascript - 如何将相同的元素添加到javascript数组n次

javascript - 如何在运行时在javascript中将数组保存在对象中

php - 如何使用 php 计算图像的 2D DCT?

swift - 如何使用完成处理程序在 core data swift 5 中获取过滤数据结果

ios - 删除 TableView 中的单个分隔符

javascript - 在 ES5 Javascript 中,如何在不使用 concat 的情况下将项目添加到数组并立即返回新数组?

swift - 使用 Swift : body of closure not executed 进行单元测试

swift - 如何将这种副作用转化为优雅的 Vapor 操作链?

ios - 如何从 SwiftyJSON 对象数组中搜索?