我正在像这样解码几千兆字节的 JSON 编码数据
let decoder = JSONDecoder()
let table = try decoder.decode([LogRow].self, from: content!)
content
纯文本在哪里。现在,此操作可能需要几分钟,具体取决于 的大小content
,我想展示一些进展。这是一个命令行程序,所以即使是定期更新长度table
也足够了。问题是我没有看到类似回调或类似的东西。Timer
我尝试过这样一个相当尴尬的
var table: [LogRow]? = []
let timer = Timer(fire: Date(), interval: 1.0, repeats: true) { t in
print("\(table?.count ?? 0) rows parsed.")
}
timer.fire()
table = try decoder.decode([LogRow].self, from: content!)
timer.invalidate()
但这只运行一次——是因为解码器阻塞了主线程而我在同一个线程中运行计时器吗?我对 GCD 有点陌生,所以我不知道如何使用 a 来做DispatchQueue
这个。
有任何想法吗?