如何在swift 3中做障碍

Posted

技术标签:

【中文标题】如何在swift 3中做障碍【英文标题】:How to do barrier in 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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于如何在swift 3中做障碍的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS swift 中做产品搜索 api?

如何从 Swift 3 中的闭包中返回

查询和 Firebase 中的位置(swift 3)

iOS - 如何在 swift 中使用`NSMutableString`

如何在 Swift 中制作可设计的 UIImage

如何在 Swift 中调用 Objective C UIView 的 initWithFrame