11

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

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

我想知道是否有一种方法可以保留仅对我的应用程序可访问的数据,但可以在卸载后继续存在。

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

谢谢您的回答。

海梅

4

5 回答 5

11

您没有说有多少数据,但以下是选项:

  • iCloud
  • 钥匙链
  • 投递箱

唯一的“通用”选项,所有设备都将拥有并且不能被禁用,是钥匙串,尽管你受到你可以使用的空间量的限制。

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

于 2012-04-13T09:25:54.793 回答
4

迄今为止,我实现这一目标的方法是使用钥匙串。基本上任何符合 NSCoding 的东西都可以存储在钥匙串中。即使仅从“良好的个人实践”的角度来看,谨慎使用钥匙串也是一个好主意。毕竟,一旦它在钥匙串中,它就在那里,直到您专门删除它,并且大概只有您的应用程序会知道用于访问您存储的数据的密钥。

可以在Keith Harrison的 Use Your Loaf 博客上找到实现将数据结构存储到钥匙串中的东西的一个非常好的起点。

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

于 2012-04-13T09:28:22.757 回答
1

请记住,Apple 希望这样:删除应用程序意味着删除该应用程序的所有数据。我更喜欢 iCloud 来保存少量数据。

于 2012-04-13T09:41:45.270 回答
0

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

于 2012-04-13T09:13:03.910 回答
0

除了钥匙串和 iCloud 之外的一种选择是 Apple 的 UIPasteboard。是类参考。有些人认为它不可靠,所以这取决于数据保留对你来说有多重要,我猜。

于 2012-04-13T14:00:28.473 回答