有没有办法在iOS应用程序安装和卸载之间保存应用程序数据?

我正在开发一个需要在启动时执行昂贵计算的应用程序。 因此,应用程序第一次运行时,应用程序将执行计算并将结果存储在文件中。

如果用户决定卸载应用程序并稍后重新安装,计算必须重新进行,我想避免重新计算。 请注意,我不是在谈论应用程序的更新,而是关于卸载/重新安装。

我想知道是否有一种方法来保持只有我的应用程序可访问的数据,但可以卸载卸载。

解决scheme可以在设备内部(使用文件/首选项/ …)或基于服务器。 例如,一个可能的解决scheme可能是将设备ID与结果一起发送到服务器并将其存储在那里,但是由于设备ID已在iOS 5中被弃用,因此不再是有效的解决scheme。

谢谢您的回答。

海梅

你不说多less数据,但以下是可选项:

  • iCloud的
  • 钥匙扣
  • Dropbox的

唯一的“通用”选项,即所有设备将具有而且不能被禁用的是钥匙串,尽pipe您受限于可用空间的数量。

就个人而言,我什么也不做。 如果用户删除应用程序,我认为这是公平的游戏,必须重新计算重新安装的东西。

我迄今为止所取得的成就是与钥匙串。 基本上符合NSCoding的任何东西都可以存储在钥匙串中。 即使仅从“良好的个人实践”的angular度来看,使用钥匙链也是一个好主意。 毕竟一旦它在钥匙串中,它就在那里,直到你特意删除它,大概只有你的应用程序将知道用来访问你存储的数据的关键。

基思·哈里森(Keith Harrison) 在这里使用你的面包博客(Use Your Loaf)博客上可以find一个实现将数据结构存储在钥匙串中的东西的非常好的起点。

总之,这是我所知道的唯一透明的方法,可以保证数据在卸载之后的持久性。 其他选项,如第三方存储库(Dropbox)或iCloud,依赖于某种程度的用户参与。

请记住,苹果希望这样:删除应用程序意味着删除此应用程序的所有数据。 我宁愿iCloud保存less量的数据。

让用户连接到他们的DropBox帐户,您可以将数据保存在那里 – 他们的API非常简单易用,您将不必担心苹果将来如何决定实现数据持久性。

除了钥匙扣和iCloud之外,还有一个select就是苹果的UIPasteboard。 这里是类的参考。 有人认为这是不可靠的,所以这取决于数据保留对你来说有多重要。