【问题标题】:Only import XML if it has been updated仅在已更新的情况下导入 XML
【发布时间】:2012-04-08 04:18:50
【问题描述】:

我正在使用 NSURLConnection 来获取 XML 文件。我解析 XML 文件,然后用它来填充核心数据。

如果 NSURLConnection 连接失败(即用户没有互联网连接),我只是从 Core Data 读取持久数据。

但是,我在想... 有没有一种方法可以检查 XML 文件以查看它是否从我上次使用它时更新?如果没有改变,我可以保存重新下载/重新填充它吗?

检查文件的上次修改时间还是什么?

有人对此有好的解决方案吗?

谢谢!

【问题讨论】:

  • 该问题被错误地标记为检查服务器上的文件修改日期。如果服务器支持它,你可以发送一个头请求并检查 Last-Modified 头。
  • 你能提供一些示例代码吗?

标签: ios core-data nsurlconnection nsxmlparser


【解决方案1】:

这可以通过检查 http 标头或 etag 来完成。

【讨论】:

【解决方案2】:

让服务器将其当前系统时间作为<timestamp>1332368408</timestamp> 之类的新字段添加到XML 文件中。您将需要另一个服务器 API 调用来检查该特定文件是否已被修改,例如 http://<server>/xmlFileChangedSince/1332368408 返回真或假,根据您建议的文件的最后修改或每次文件被覆盖时覆盖 <timestamp> 字段修改的。如果上述 http 请求的结果为真,则您的应用知道下载新修改的数据。

<timestamp> 字段添加到服务器端的 XML 文件的方法的好处是,它可以防止同步服务器和应用程序时间的任何必要性,这保证不完全同步。如果您不想将该字段添加到 XML 数据中,那么您可以根据 NSURLConnection 返回的时间设置应用程序端数据的时间戳,但如果您希望它完全可靠,您需要同步应用程序和服务器时间。虽然这不是特别困难,但很烦人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-04
    • 2013-04-15
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多