核心数据发布数据到Web服务防止重复发布?

时间:2013-08-12 17:21:25

标签: ios post core-data http-post sync

这可能是一个简单的问题,但我已经在圈子里跑了几个小时试图找出最好的方法来做到这一点。

基本上我的应用程序允许用户创建一个帖子条目,然后将其保存到核心数据中,然后发布到Web服务,如果在此期间Internet可用,则在后台线程中完成向Web服务的发布用户继续工作。

记录标记为SendToWebService = 1

我现在的问题是,用户可以查看他们在应用程序中创建的条目列表,如果尚未发生,则选择将其重新发布到Web服务,但是这会导致重复的帖子作为之前的后台线程仍在努力发布条目,因为它正在上传图片或大的东西。

有关如何最好地处理此事的任何建议?

由于

3 个答案:

答案 0 :(得分:1)

我建议你的核心数据对象有3个上传标志。

   0 => upload failed,
   1 => currently uploading, 
   2 => upload complete.

用户选择上传帖子后,将标志设置为当前上传,在这种情况下,您将更新按钮设置为微调器或其他内容。完成后,无论是失败还是完成,然后根据标志将上传按钮更改为完成或重新上传。

这似乎是明显的答案,希望我能正确理解你的问题。

答案 1 :(得分:1)

如何做到这一点,为你当前正在发送的帖子设置SendToWebService=1,如果它通过保留1或删除条目(取决于你的实现)但由于某种原因如果它无法发布,设置你的SendToWebService back to 0。因此,当邮件正在发送时,它似乎就像发送一样。

但是如果你想对功能更加透明,可以创建另一个Boolean called InProgress或者其他内容,然后在发送请求时将其设置为1并且不要让用户发布具有InProgress True的帖子并且你可以显示哪些是在UI中发送的,如果发布,请转动SendToWebService=1,如果没有,请转动InProgress again to 0

希望有所帮助

答案 2 :(得分:0)

如果用户正在查看数据库中的条目列表,而不是最简单的方法:

  1. 发布事件后,将发布到数据库的帖子保存到服务器并启动后台线程。
  2. 当线程完成运行时,检查上传失败是否将db中的条目标记为未上传,如果成功则无效。
  3. 通过在db中保存上载状态,即使用户更改屏幕或关闭应用程序,状态也会保持不变。