iOS文件存储:不备份的解决方案

时间:2012-03-23 06:28:05

标签: ios file backup storage icloud

与许多开发人员一样,我的iOS应用程序因为拥有可下载到iCloud的可下载内容而被拒绝。我已经搜索了这个问题的明确答案,但却找不到答案。

Apple表示您应该对文件实施“请勿备份”属性,但是,他们也会声明(https://developer.apple.com/library/ios/#qa/qa1719/_index.html):

新的“不备份”属性仅供iOS 5.0.1或更高版本使用。在iOS 5.0及更早版本中,应用程序需要将其数据存储在/ Library / Caches中以避免备份。由于旧系统会忽略此属性,因此您需要确保您的应用符合您的应用支持的所有iOS版本上的iOS数据存储指南。

我的应用支持iOS 4.0及更高版本。这是否意味着如果我想保持对iOS 4.0-5.0的支持,我别无选择,只能把我的所有内容都放到Caches文件夹中?或者,我可以添加“不备份”属性并将文件保存在/ Documents中吗?如果我必须将内容保留在Caches文件夹中,是否可以防止在低存储情况下清除这些文件?最后,是否有任何开发人员将文件放入Caches文件夹并知道它们被清除的频率?

非常感谢任何建议或帮助。非常感谢!

3 个答案:

答案 0 :(得分:1)

关注区域是iOS 5.0,它支持iCloud,但不识别“不备份”属性。在这种情况下,文档目录中的应用程序的所有数据都可能会备份到iCloud。对于5.x以下的iOS版本:

  • iCloud备份无效。
  • “不要备份”标志不相关。在编译期间不会产生任何警告。

因此,数据可以保存在文档目录中,对于所有版本,“不备份”标志适当地添加到内容(文件/文件夹)中。问题仅在于5.0版本。

答案 1 :(得分:0)

我认为您可以找到类似的问题:

What is suitable location for creating sqlite file?

根据我的想法,最好使用新目录而不是文档目录将文件存储在库中。

答案 2 :(得分:0)

没有错,tou说。我以这种方式解决了同样的问题。我将我的数据库和目录图像保存在目录Documents / ..标记中,因为Apple不建议备份。以这种方式,对于更新到5.x或更高版本的设备,文件不会备份到iCloud;对于其他人没有变化,因为没有对iCloud的支持。

这是最佳做法,因为我们不在iCloud中备份的与用户无关的文件。您不想重新下载的所有其他文件必须保存在文档中,将其标记为不备份。如果将其保存在Caches文件夹中,那么当您关闭应用程序时会在短时间内删除它们,并且当您再次打开它时必须重新启动它。