作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 launchd 守护进程,它经常使用 NSOperationQueue 通过 Web 服务上传一些数据。
我需要能够保留这些数据,以便以后在发生故障时可以重新上传,甚至在 session 之间(例如,计算机关闭的情况下)。
这不是一个高负载应用程序,它可能间歇性地每分钟接收不超过 1 或 2 个项目,之间通常有几个小时的间隔。
如果没有这种持久性,我的初始实现如下:
这部分功能一切正常。我现在要添加的部分是Web服务故障、计算机关闭等情况下的持久性。
似乎我可以使用 MyDataObjects 的 NSMutableArray 以及包含所有尚未上传的项目的 NSKeyed(Un)archiver 并观察所有操作的 -isFinished 键以从数组中删除项目,但它似乎应该有一种更简单的方法,可以减少出错的空间,特别是就线程安全而言。
有人能指出我正确的方向吗?
最佳答案
您可以为每个项目添加两个操作。第一个会将项目存储到本地存储,第二个将依赖于第一个,并在成功时从本地存储中删除该项目。
然后,当您想要从本地存储恢复任何项目时,您只需创建存储到云的操作,而不是创建本地存储的操作。和以前一样,只有成功时,他们才会从本地存储中删除项目,如果不成功,他们会将项目保留在本地存储中以供下一次尝试。
关于objective-c - 通过 Web 服务将持久项目上传到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1331500/
我是一名优秀的程序员,十分优秀!