iOS-如何创建脱机操作队列并在线时执行?

时间:2016-04-09 07:37:37

标签: ios objective-c iphone core-data offline

我刚进入iOS。我有一个场景:如果用户的设备处于离线状态,则将其请求(Web服务)添加到队列中,并附上所有请求详细信息参数,并且每当他的设备联机时,然后逐个点击Web服务(已存储的数据) /同时直到队列为空。我必须使用核心数据。我对此一无所知。所以,如果有人与示例项目共享链接(github /其他任何网站),我将感激不尽。 提前致谢。

2 个答案:

答案 0 :(得分:0)

离线时在临时数据库中存储数据,当上线时检查临时数据库是否有数据然后使用递归或适当的循环逐个发送到服务器。成功提交(在呼叫服务方法的完成处理程序中)如果使用递归,则从临时数据库中删除该数据并再次从中调用函数。

答案 1 :(得分:0)

当连接不稳定时,我们在内部项目上遇到了类似的问题,因此我们编写了这个包装任何网络请求的框架,并允许它在不考虑连接性的情况下排队 - https://cocoapods.org/pods/OfflineRequestManager。任何做类似事情的人都会发现它很有用,或者至少从中汲取灵感。您仍然必须自己管理网络请求,但它提供了一个相当简单的界面,用于确保应用程序一直尝试执行它,直到成功为止,包括保存到磁盘以便在启动时重新尝试。

最简单的用例看起来如下所示,尽管大多数实际情况(保存到磁盘,特定请求数据等)都会有更多的环节要跳过:

import OfflineRequestManager

class SimpleRequest: OfflineRequest {
    func perform(completion: @escaping (Error?) -> Void) {
        doMyNetworkRequest(withCompletion: { response, error in
            handleResponse(response)
            completion(error)
        })
    }
}
///////
OfflineRequestManager.defaultManager(queueRequest: SimpleRequest())