保存日期戳iOS

时间:2012-11-23 15:45:35

标签: ios xcode

所以我在xcode中编写与不同服务器上的数据库同步的程序,但要更新的信息取决于上次同步的日期。保存“dateLastSynced”时间戳的最佳方法是什么,这样当我打开程序时,它可以自动同步日期戳之后发生的更改?

1 个答案:

答案 0 :(得分:1)

显然[NSDate date]NSDate格式获取当前日期,但如果您将其记录在SQLite数据库中,则还可以使用相应的SQLite date and time function,例如{{} 1}}。

但是,如果您使用此时间戳作为您在远程Web服务请求中使用的参数(即服务器将根据其自己的内部时钟和带时间戳的记录检查的时间戳),我建议您这样做根本不使用你的本地时钟。从您从该服务器收到的时间戳确定SELECT datetime();,而根本不使用本地时钟。实际上,您可以让Web服务器的时间戳机制控制该过程。因此,您将从远程服务器获取相应的时间戳字段,并将其存储在数据库的dateLastSynced时间戳中。关键是,您不希望轻微的时钟失调(或者更糟糕的是,时区管理不当)会对您的同步逻辑产生负面影响。

就个人而言,当我协调远程数据库和本地数据库之间的同步时,我通常在本地数据库中有一个单行表来获取配置信息,并在那里存储这个基于服务器的时间戳。您当然可以使用NSUserDefaults(请参阅Preferences and Settings Programming Guide)或plist等等,但我个人认为此同步时间戳是我本地数据库状态的属性,所以我觉得保持它更舒服那里。如果将其保留在其他位置,请考虑其他可能更新数据库的进程(例如,当用户使用新的/修改的数据结构将其应用更新到2.0版时,您的迁移计划是什么)。

因此,对于它的价值,我个人会将数据库同步信息保存在数据库本身,即使有一行配置表感觉很傻。 (另外,我也倾向于在配置表中包含app / database版本号等字段。)