如何在 Swift 中从同一站点重新加载新的 JSON 数据?
Posted
技术标签:
【中文标题】如何在 Swift 中从同一站点重新加载新的 JSON 数据?【英文标题】:How can I reload new JSON data from the same site in Swift? 【发布时间】:2018-04-24 08:35:04 【问题描述】:基本上我正在制作一个从网上提取数字的应用程序(使用 json),我想知道如何每 5 秒左右重新加载该数据。我已经设置它,所以它在一个名为 getData() 的函数中,我认为让它在一个无限的 while 循环中会像这样工作:
while 1 > 0
getData()
sleep(5)
然而,每当我启动应用程序时,它都会崩溃。 (当我在没有无限循环的情况下调用 getData() 时它有效)我错过了什么吗?如何每 5 秒刷新一次 json 数据?谢谢!
【问题讨论】:
永远不要使用sleep()
或无限循环,因为这会阻塞线程。如果您必须投票,请使用Timer()
我将如何设置计时器?那会刷新数据吗?
Timer
只是在“滴答”时执行一个函数;您可以在该函数中重新加载数据。
【参考方案1】:
除了这些你还可以使用:
var timerDispatchSourceTimer : DispatchSourceTimer?
您可以在 ViewWillAppear 中调用您的函数并根据需要设置延迟:
timerDispatchSourceTimer = DispatchSource.makeTimerSource(flags: [], queue: DispatchQueue.main)
timerDispatchSourceTimer?.scheduleRepeating(deadline: .now(), interval: .seconds(YOUR DELAY TIME))
timerDispatchSourceTimer?.setEventHandler
// do something here
self.performSelector(inBackground: #selector(YOUR FUNCTION), with: nil)
timerDispatchSourceTimer?.resume()
在 viewwillDisAppear 上:
timerDispatchSourceTimer?.cancel()
【讨论】:
以上是关于如何在 Swift 中从同一站点重新加载新的 JSON 数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Angular 中从 js 执行空缓存和硬重新加载?