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

Posted

技术标签:

【中文标题】有没有办法在 iOS 中标记文件,这样它们就不会在存储空间不足的情况下从 Library/Caches 目录中清除【英文标题】:Is there a way to mark files in iOS so they are not purged from Library/Caches directory in low storage situation 【发布时间】:2018-09-25 22:17:26 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

根据文档:“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_ANOTHER_LOCATION_

“Newsstand Kit 为您找到的问题提供托管存储库 在 NKIIssue 的 contentURL 上。此托管存储库充当 缓存您在服务器上托管的内容,就像任何缓存一样 随着系统资源变低,容易被驱逐。

在这种情况下,您通过 Newsstand Kit 提供的信息 currentReadingIssue 属性和日期参数 addIssueWithName:date: 帮助 Newsstand Kit 确定哪些内容的优先级 对用户来说是最关键的,因为它会从缓存中驱逐元素。 您的报亭应用程序应该能够在 用户的请求,如果出现这种资源限制。”

Newsstand Kit 会优先考虑它在低存储情况下保留哪些问题,不幸的是,除了保持 currentlyReadingIssue 属性为最新状态之外,您无法对此产生任何影响。

【讨论】:

谢谢你,皮特。根据我们的观察,很可能是 iOS 清除了 Library/Caches 中的所有内容。由于空间不足,我们从应用商店添加到 iPad 的最后一个应用无法安装,每次新尝试时,我们的应用图标都会闪烁一次,并且库/缓存为空。由于我们找不到任何解决方案,我们现在正在替换 Newsstand Kit 功能并将所有问题和数据库移动到 /Documents 文件夹,因此无法清除它,谢谢。

以上是关于有没有办法在 iOS 中标记文件,这样它们就不会在存储空间不足的情况下从 Library/Caches 目录中清除的主要内容,如果未能解决你的问题,请参考以下文章

SVN:有没有办法将文件标记为“不提交”?

我可以在部分类中定义属性,然后用另一个部分类中的属性标记它们吗?

用php读取pdf文件

有没有办法在Interface Builder中为Auto Layout Constraints添加标识符?

有没有办法知道何时在 iOS 中删除了应用程序?

SQL:有没有办法找到重复项并将它们标记为带有大小写的新列