核心数据和服务器数据同步

时间:2015-06-06 20:38:07

标签: ios database core-data

首先,在这个问题上,我并没有对任何数据库抱怨,只是我不知道并需要改进自己。

我开发了一个包含coredata的应用程序,它有近5到6个表,例如工作,员工等等。现在好几点关于coredata。

  • Coredata自动管理我们不需要在每个表中创建PK的主键管理
  • Myserver包含主键,例如job_id,emp_id是自动增量 现在在我的应用程序中我必须将我的数据与服务器同步,当我在我的表中添加任何条目时,相应的字段job或emp id将如预期的那样为零我无法在此字段中创建自己的值。

所以现在每30分钟我必须创建一个包含表格数组的JSON,该表格应该获取用户在这30分钟内执行的最新数据库记录,如添加更新删除所以我需要一种机制,我可以同步我的服务器和服务器的数据也确定需要添加或更新或删除此行。

我尝试过几次以下的可能性,但仍然没有取得完美的成功

  1. 我创建了3个字段 createdtimestamp,updatedtimestamp和 deletedtimestamp 所以当用户第一次添加一个条目时 设备时间的创建时间戳becuse app可以离线运行。
  2. 因此,在相应的操作中,如果用户更新,我会更新其他时间戳 任何记录或删除任何记录。但为了更新 服务器我们必须得到服务器时间戳的最新条目 但在这种情况下,如果iser时间戳与服务器不匹配则 这种情况很糟糕。
  3. 所以我需要来自这个社区的建议。 感谢。

1 个答案:

答案 0 :(得分:2)

您的服务器可能需要CRUD(创建,读取,更新,删除)类型的API。请求应在脱机时排队并重复发送,直到收到有效响应,服务器应正常处理重复请求。

要处理add,您可以使用一些参数调用类似'createJob'的方法,并从服务器接收一个id,然后您可以使用它来填充job_id字段。

要处理服务器端所做的更改,您基本上需要一个本地存储的“上次更新”时间戳,您将与服务器同步并提供您之前收到(和存储)的最新时间戳或零(从未收到过的时间戳) )。然后,服务器将返回此时间点之后已更改的所有内容以及应用程序下次需要发送的新时间戳(上次更改)。响应应包含足够的信息,以便更新当前状态并解决任何冲突。

要解决已删除的状态,您的记录可能会有一个“隐藏”标志,表明它是否已被删除(这称为“软删除”),这有助于引用完整性,但如果您确定可以一旦从服务器收到有效的“deleteJob”响应,就可以清除记录而不破坏任何关系。

如果没有设计您的解决方案,我无法提供更多帮助。但是,有各种工具可以帮助经验不足的开发人员处理这个过程,例如RESTKit。在服务器端,您可以查看轨道上的Node.js或ruby或者为您处理REST的任何其他内容。

您可以使用不同的HTTP方法来实现此目的,而无需使用RFC2616中定义的多个端点。