首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iOS中获得未过期的缓存?

如何在iOS中获得未过期的缓存?
EN

Stack Overflow用户
提问于 2018-08-11 19:38:36
回答 1查看 305关注 0票数 1

在我的应用程序中,我使用缓存框架进行缓存。缓存框架可以为混合存储提供过期选项。我已经为两个存储设置了.never (磁盘和内存),但是缓存仍然可能过期。

在我的应用程序中,我需要永远缓存一些Data(),并在必要时更新它(但不是经常)。获得这个缓存的速度并不是必要的。

可以使用这个框架吗?我可以只使用DiskStorage而不是Storage吗?我认为它可以过期,因为它可以一直保存到系统内存中(正如我认为的那样),所以iOS可以在需要时清理它,但是iOS可以清理磁盘存储吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-12 21:01:48

因此,我在苹果公司的指导方针中发现了这一点:

使用“不备份”属性指定应该保留在设备上的文件,即使在低存储情况下也是如此。使用此属性的数据可以重新创建,但即使在较低的存储情况下,也需要持久化才能使应用程序正常运行,或者因为客户希望在脱机使用期间可以使用该属性。该属性用于标记文件,而不管它们位于哪个目录,包括文档目录。这些文件不会被清除,也不会包含在用户的iCloud或iTunes备份中。因为这些文件确实使用设备上的存储空间,所以您的应用程序负责定期监视和清除这些文件。

我为此编写了一个简单的函数:

代码语言:javascript
复制
func setExludedFromBackup() {
    var url = try? FileManager.default.url(
        for: .documentDirectory,
        in: .userDomainMask,
        appropriateFor: nil,
        create: true).appendingPathComponent("MyFolder")
    var resuorceValues = URLResourceValues()
    resuorceValues.isExcludedFromBackup = true
    try? url?.setResourceValues(resuorceValues)
 // print(try? url?.resourceValues(forKeys: [.isExcludedFromBackupKey]).isExcludedFromBackup)
 // you can check if your directory excluded from backup (it excluded if "Optional(Optional(true))" printed)
}

是的,它是“文档”文件夹,因为其他文件夹仍在继续清除。

您只需在某个地方调用这个func (我使用了AppDelegate),并在调用它之前检查目录是否已经排除在备份之外。这样可以防止文档目录中的"MyFolder“被删除,如果iOS内存用完了!因此,只要我愿意,我的数据就能得到。,但是您也必须包括事后删除机制,因为这些数据永远不会被自动删除,并且设备上的内存空间也不会被释放。

我不知道苹果会对此做出什么反应,在检查你的应用程序的AppStore时,告诉他们你的应用程序的离线使用情况,以及你对文档文件夹做了什么,别忘了描述你的删除机制。我希望这不会破坏苹果的指导方针和应用程序不会被拒绝。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51803131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档