【问题标题】:How to do barrier in swift 3如何在swift 3中做障碍
【发布时间】:2017-07-23 03:45:21
【问题描述】:

我会推送通知。如果数据库中没有数据,则在显示之前下载。我用Grand Central Dispatch做了一个时间间隔,但它不正确,因为例如如果用户是一个弱互联网应用程序下降。

GCD 的屏障在下载数据之前如何延迟数据的显示?

这段代码有时间间隔:

if equal == false {
    let url = "https://****.**/json/post/\(data)"
    self.download.getLastestNews(url)
}


let when = DispatchTime.now() + 2

DispatchQueue.main.asyncAfter(deadline: when) {
    let newsCategory = self.realm.objects(News.self).filter("newsID == \(self.id)")
    vc.titleText = (newsCategory.first?.newsTitle)!
    vc.fullText = (newsCategory.first?.newsFullText)!
    vc.imageLink = (newsCategory.first?.newsImage)!

if let tabBarController = self.window?.rootViewController {
   tabBarController.present(vc, animated: true, completion: nil)
   }
}

平台 iOS 9.*、iOS 3

【问题讨论】:

    标签: ios swift grand-central-dispatch barrier


    【解决方案1】:

    延迟队列并不总是有效,因为正如您所说,有时互联网连接太慢并且可能没有接收到数据,因此程序可能会失败并出现错误。从 Internet 下载任何内容时,请检查完成处理方法。在它们内部使用您在 DispatchQueue 闭包中提供的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多