4

Apple 的数据存储指南规定如下:

2) 可以再次下载或重新生成的数据应存放在/Library/Caches 目录下。

...和(强调我的):

4) 使用“不备份”属性指定应保留在设备上的文件,即使在存储空间不足的情况下也是如此。将此属性用于可以重新创建但即使在存储空间不足的情况下也需要保留的数据,以便您的应用程序正常运行,或者因为客户希望它在离线使用期间可用。此属性适用于标记的文件,无论它们位于哪个目录,包括 Documents 目录。这些文件不会被清除,也不会包含在用户的 iCloud 或 iTunes 备份中。由于这些文件确实使用设备上的存储空间,因此您的应用程序负责定期监控和清除这些文件。

Apple 链接到的有关此主题的更详细讨论的页面没有提及该属性所做的任何事情以防止缓存数据被清除。

那么有谁知道“不备份”属性是否真的像“不备份和不删除”一样用于放置在中的项目/Library/Caches,或者文件是否仍需要存储在应用程序的Documents目录中以确保它们不被删除当设备空间不足时?

4

3 回答 3

4
于 2014-05-27T17:08:09.313 回答
0

对我来说这很清楚,目录结构是我首先要遵循的,正如 Apple 所说的那样。如果您既想保存文件又不想备份它,请将其放在 Documents 中,最好放在您标记的文件夹中。

即使您今天使用缓存观察到某些行为,它也可能在未来发生变化。

于 2013-05-17T11:59:43.467 回答
0

目前正在研究同样的问题,并假设添加该属性将防止文件在磁盘空间不足的情况下被清除(你知道,因为苹果的文档字面意思是这样)。我想我会用我的发现来更新这个,因为距离接受答案已经有几年了。我有一个可以重新创建的数据库并且不包含用户生成的数据,所以我将它存储在缓存中,但包含一些可能影响应用程序正常运行的数据,所以我不希望它在用完时被清除磁盘空间(当前发生并记录为错误)。我已经尝试添加NSURLIsExcludedFromBackupKey到文件本身,并且在清除发生后文件仍然被删除。因此,从 iOS 11.3 开始,它似乎并不能阻止清除。不确定下一步是什么,因为我真的不想为所有用户移动数据库,但这可能是下一步,所以它在 Documents 中是安全的。如果有人有不同的经历,请纠正我。

于 2018-05-31T22:14:45.517 回答