我正在开发一个需要在启动时执行昂贵计算的应用程序。因此,应用程序第一次运行时,应用程序会执行计算并将结果存储在文件中。
如果用户决定卸载应用程序并稍后重新安装,则必须再次进行计算,我希望避免重新计算。请注意,我不是在讨论应用程序的更新,而是关于卸载/重新安装。
我想知道是否有一种方法可以保存仅适用于我的应用程序的数据,但这可以在卸载后继续使用。
解决方案可以在设备内部(使用文件/首选项/ ...)或基于服务器。例如,一个可能的解决方案是将带有结果的设备ID发送到服务器并将其存储在那里,但由于iOS 5中已弃用设备ID,因此不再是有效的解决方案。
感谢您的回答。
的Jaime
答案 0 :(得分:11)
您没有说明有多少数据,但以下是选项:
所有设备都具有且无法禁用的唯一“通用”选项是钥匙串,但您可以使用的空间量受到限制。
就个人而言,我什么都不做。如果用户删除应用程序我认为重新计算重新计算内容是公平的游戏。
答案 1 :(得分:4)
迄今为止我实现这一目标的方法是使用钥匙串。基本上任何符合NSCoding的东西都可以存储在钥匙串中。即使只是从“良好的个人实践”的角度来看,使用钥匙链也是一个好主意。毕竟一旦它进入钥匙串,它就在那里,直到你专门删除它,并且可能只有你的应用程序知道用于访问你存储的数据的密钥。
实现将数据结构存储到钥匙串中的东西的一个非常好的起点可以在Keith Harrison的Use Your Loaf博客here中找到。
总之,这是我所知道的唯一透明方法,可以保证卸载后数据的持久性。其他选项,如第三方存储库(Dropbox)或iCloud确实依赖于某种程度的用户参与。
答案 2 :(得分:1)
请记住,Apple希望这样:删除应用意味着删除此应用的所有数据。我更喜欢iCloud来保存少量数据。
答案 3 :(得分:0)
让用户连接到他们的DropBox帐户,您可以将数据保存在那里 - 他们的API非常简单易用,您不必担心Apple将来如何决定实施数据持久性。
答案 4 :(得分:0)
除钥匙串和iCloud之外的一个选择是Apple的UIPasteboard。 Here是类引用。有些人认为它不可靠,所以这取决于数据保留对您的重要程度,我想。