使用 Sencha 制作一个非常小的 Hello World 应用程序来写入本地存储,我可以重现这种行为。似乎在应用程序退出时,它会将本地存储文件的副本写入 /Documents 文件夹。
这对我来说似乎很可疑,它让我想起了 iOS 5.1 的 PhoneGap 补丁,它也备份了 localStorage 文件。
在 iOS 5.1 中,Apple 开始将 localStorage 文件放在 Library/Caches 文件夹中,这破坏了许多应用程序,因为数据不再可靠存储。因此PhoneGap 和其他人开始实施Workarrounds,将localStorage 文件备份到documents 文件夹,并在需要时自动恢复。
为了找到 Sencha 做类似事情的证据,我打开了生成的 .app 包并找到了一个包含本机包装器代码的 stbuild_template 文件。它当然是编译过的,但是搜索字符串“localStorage”会得到一些有趣的结果,例如:
restoreLocalStorage
preserveLocalStorage
Could not remove source file while backing up localstorage Could not copy localstorage backup . Caches WebKit/LocalStorage .file__0.localstorage file__0.localstorage
SNLocalStoreageFix
我还发现了很多对 NimbleKit 的引用,这些引用似乎在内部用于包装。
该线程还暗示了 OP 正在使用的 Sencha Touch 2.1 中 iOS 5.1 本地存储问题的解决方案:http ://www.sencha.com/forum/showthread.php?194674-Localstorage-and-native- iOS-5.1-apps&s=04149e771f9c4eea15cb6f6d97069ff6
所有这些都证明了 Sencha 为 iOS 5.1 实现了一个工作区,它将 localStorage 放在 /Documents 文件夹中。由于您只使用 localStorage 文件进行缓存,Apple 拒绝了您,因为您将非用户数据存储在 /Documents 中。
我认为使用 PhoneGap 可以选择禁用此备份。因此,您可能要考虑使用它或询问 Sencha 是否有类似的选项来禁用它。