我目前正在使用Phonegap 1.4.1開發移動應用程序。在iOS上(當前使用5.1),該應用程序不會加載localStorage中的所有數據。只能部分檢索localStorage數據
第一次應用程序使用我的localStorage設置一個標誌,像這樣:
window.localStorage.setItem("myFlag", "true");
我還設置項「意達」,「ItemB」和「ItemC」以同樣的方式。這些鍵/值對中的每一個都在使用應用程序的過程中的不同時間設置,因此沒有設置它們的定義順序。
我的問題是這樣的:
當我重新安裝應用程序,而不先刪除現有副本,應用程序不再看到「MyFlag」,「ItemB」或「ItemC」 - 它確實看「意達」。使用window.localStorage.length
返回1,當它應該返回4.我導出應用程序的數據文件,並用SQLite Inspector(app store中的應用程序)檢查文件_0.localstorage文件,並顯示所有四個鍵/值對。
由於iOS 5.1+已將本地存儲移至Cache文件夾,因此我已按here所述實施了對file__0.localstorage文件的備份。基本上,所做的就是將localstorage db複製到應用程序暫停和退出時的Documents文件夾,然後在執行webViewDidStartLoad時返回到Cache文件夾。這部分工作正常,所以我不認爲這個過程導致問題(在我添加該過程之前,問題的症狀存在於應用程序中)。
在重新安裝應用程序之前'window.localStorage.length'看起來是否正確? – 2012-08-06 15:18:48
是的。打印出localStorage對象的JSON.stringified版本將顯示所有屬性。重新安裝應用程序後,只顯示「ItemA」。 – 2012-08-06 15:37:41
所以這對其他人來說對我來說似乎很神祕? – 2012-08-07 12:18:43