如何在 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 执行空缓存和硬重新加载?

在 Swift 中从 Plist 加载 Url 图像

如何在 swift 中从可加载包创建主体类的实例

如何在 Swift 中从相机或照片库加载图像 [关闭]

如何在swift中从.js文件中调用javascript函数

如何在swift中从图像创建循环加载器