我目前正在使用 Phonegap 1.4.1 开发移动应用程序。在 iOS(当前使用 5.1)上,应用程序不会从 localStorage 加载所有数据。
第一次使用该应用程序时,我在 localStorage 中设置了一个标志,如下所示:
window.localStorage.setItem("myFlag", "true");
我也以同样的方式设置项目“ItemA”、“ItemB”和“ItemC”。这些键/值对中的每一个都是在应用程序使用期间的不同时间设置的,因此没有定义它们的设置顺序。
我的问题是这样的:
当我重新安装应用程序时,没有先删除现有副本,应用程序不再看到“MyFlag”、“ItemB”或“ItemC”——它确实看到了“ItemA”。当它应该返回 4 时,使用window.localStorage.length
返回 1。我已经导出了应用程序的数据文件并使用 SQLite Inspector(来自应用商店的应用程序)检查了 file__0.localstorage 文件,它显示了所有四个键/值对。
由于 iOS 5.1+ 已将 localstorage 移至 Cache 文件夹,因此我已经实现了 file__0.localstorage 文件的备份,如此处所述。基本上,这样做是在应用程序暂停和退出时将 localstorage db 复制到 Documents 文件夹,并在执行 webViewDidStartLoad 时复制回 Cache 文件夹。这部分工作正常,所以我不认为该程序导致了问题(在我添加该程序之前,应用程序中存在问题的症状)。