gpt4 book ai didi

objective-c - 通过 Web 服务将持久项目上传到磁盘

转载 作者:行者123 更新时间:2023-12-03 17:18:06 25 4
gpt4 key购买 nike

我有一个 launchd 守护进程,它经常使用 NSOperationQueue 通过 Web 服务上传一些数据。

我需要能够保留这些数据,以便以后在发生故障时可以重新上传,甚至在 session 之间(例如,计算机关闭的情况下)。

这不是一个高负载应用程序,它可能间歇性地每分钟接收不超过 1 或 2 个项目,之间通常有几个小时的间隔。

如果没有这种持久性,我的初始实现如下:

  1. 守护进程接收数据。
  2. 守护进程将数据解析为 MyDataObject 类型的对象。
  3. Daemon 创建 NSOperation 子类的实例,并使用 MyDataObject 作为要上传的对象,并将其添加到 NSOperationQueue 中。
  4. NSOperationQueue 尽可能通过 Web 服务遍历并上传 MyDataObject。

这部分功能一切正常。我现在要添加的部分是Web服务故障、计算机关闭等情况下的持久性。

似乎我可以使用 MyDataObjects 的 NSMutableArray 以及包含所有尚未上传的项目的 NSKeyed(Un)archiver 并观察所有操作的 -isFinished 键以从数组中删除项目,但它似乎应该有一种更简单的方法,可以减少出错的空间,特别是就线程安全而言。

有人能指出我正确的方向吗?

最佳答案

您可以为每个项目添加两个操作。第一个会将项目存储到本地存储,第二个将依赖于第一个,并在成功时从本地存储中删除该项目。

然后,当您想要从本地存储恢复任何项目时,您只需创建存储到云的操作,而不是创建本地存储的操作。和以前一样,只有成功时,他们才会从本地存储中删除项目,如果不成功,他们会将项目保留在本地存储中以供下一次尝试。

关于objective-c - 通过 Web 服务将持久项目上传到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1331500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com