我有一个空的全局数组。我想做的唯一简单的事情就是向这个数组添加一个元素。很快,这个看似简单的任务就被证明是困难的。我只剩下一个空数组,并且没有任何内容附加到我的全局数组中。
我可以看到它在 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/