首页 > 解决方案 > 有没有办法在 iOS 中标记文件,这样它们就不会在存储空间不足的情况下从 Library/Caches 目录中清除

问题描述

我们有一个使用 Newsstand 工具包开发的应用程序,因此文件存储在 Library/Caches 内,由于使用 Newsstand,我们无法更改位置。我们希望这些文件不会在存储空间不足的情况下被清除。因此,我们根据 iOS 数据存储指南将所有这些都标记为“不备份”属性: https ://developer.apple.com/icloud/documentation/data-storage/index.html

“4. 使用“不备份”属性指定应保留在设备上的文件,即使在存储空间不足的情况下也是如此。”

但不幸的是,无论如何它们都被清除了(我们在 iOS 11.3-12.0 中对其进行了测试)。请问我们可以使用其他一些方法来禁用清除吗?使其发挥作用的任何其他想法。谢谢!

标签: iosobjective-cfilesystems

解决方案


不幸的是,您无法阻止所有背部问题在存储空间不足的情况下被清除。

currentlyReadingIssueNewsstand Kit 允许您通过设置 的属性来指定用户当前正在阅读的问题NKLibrary

根据文档:“Newsstand Kit 在清除由于可用闪存存储水平低的问题时会考虑此设置。”

https://developer.apple.com/documentation/newsstandkit/nklibrary/1615812-currentlyreadingissue?language=objc

没有办法强制 NewsstandKit 将所有过刊保持在低存储状态。

请参阅报亭常见问题解答,特别是“我的所有问题都会自动无限期地存储在用户的设备上吗?”:

https://developer.apple.com/library/archive/technotes/tn2280/_index.html#//apple_ref/doc/uid/DTS40011215-CH1-MANAGING_CONTENT-CAN_I_MOVE_MY_ISSUES_OUT_OF_THE_DEFAULT_NEWSSTAND_STORAGE_LOCATION_ONCE_THEY_RE_DOWNLOADED__OR_DOWNLOAD_ISSUES_TO_AN

“Newsstand Kit 为位于 NKIIssue 的 contentURL 上的问题提供了一个托管存储库。这个托管存储库充当您在服务器上托管的内容的缓存,并且与任何缓存一样,当系统资源变低时,它很容易被驱逐。

在这种情况下,您通过 currentReadingIssue 属性和 addIssueWithName:date: 中的 date 参数提供 Newsstand Kit 的信息有助于 Newsstand Kit 确定哪些内容对用户最重要,因为它会从缓存中驱逐元素。如果出现此类资源限制,您的报亭应用程序应该能够根据用户的请求重新下载回刊。”

currentlyReadingIssueNewsstand Kit 优先考虑将哪些问题保留在低存储状态,不幸的是,除了保持财产最新之外,您无法对此产生任何影响。


推荐阅读