通知哪个调用与可达性无关

Posted

技术标签:

【中文标题】通知哪个调用与可达性无关【英文标题】:Notify which invocation was made without connection with Reachability 【发布时间】:2015-12-15 14:00:21 【问题描述】:

我需要在我的应用启动时设置一些初始数据。我有一个名为loadData() 的方法,它在其中进行了多次调用,需要互联网连接。我的代码如下所示:

func setup() 
  if reachability.isReachable() 
     // If there is connection, we setup the initial data
     loadData()
   else 
    //If there is no connection, wait for a notification 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "reachabilityChanged:", name: ReachabilityChangedNotification, object: nil)
    do 
        try reachability.startNotifier()
     catch 
        print("Unable to start notifier")
    
 


func loadData() 
  loadA()
  loadB()
  loadC()
  ..
  loadZ()


func reachabilityChanged(note: NSNotification) 
  if reachability!.isReachable() 
    loadData()
    reachability!.stopNotifier()
   

这让我可以处理在启动loadData() 之前没有连接的情况。但是,如果连接丢失,例如在loadC() 期间,我将无法添加通知以便稍后加载丢失的数据。我怎样才能做到这一点?

【问题讨论】:

你想怎么实现呢?如何将所有项目添加到队列中,以便暂停它并添加它们之间的依赖关系? @Wain 这样的事情似乎是对的,我该怎么做? 看上次wwdc的nsoperation谈话 【参考方案1】:

这取决于您的加载函数内部的内容。由于互联网连接要求,我认为您正在与服务器进行一些通信。 在这种情况下,您可以检查响应代码,并在出现问题时让委托提醒您的班级。 (之后你可以调用失败的函数)

【讨论】:

谢谢@Peter,你会如何“召回失败的函数”?为每个函数保留一个标志?

以上是关于通知哪个调用与可达性无关的主要内容,如果未能解决你的问题,请参考以下文章

通知用户可达性(Ashley Mills 的可达性)

可达性与 UIDevice-可达性

如何在 ios 中知道设备与哪个网络主机连接

暂停应用程序的可达性更改 iOS 系统通知

获取在线/离线可达性通知

使用可达性通知用户互联网连接