gpt4 book ai didi

ios - 监控和维护应用程序在磁盘上的大小的解决方案

转载 作者:可可西里 更新时间:2023-11-01 05:53:47 24 4
gpt4 key购买 nike

我正在构建一个广泛使用 CoreData 的应用程序,我的很多模型都具有 UIImage 和 NSData 属性(用于图像和视频)。由于将数据直接存储到 CoreData 中不是一个好主意,我构建了一个文件管理器类,它根据创建的上下文和媒体类型将文件写入文档目录中的不同存储桶。

我现在的问题是如何管理文档目录?有没有办法检测应用程序在其总分配空间中用完了多少空间?此外,清理这些目录的最佳方法是什么?我是在每次写入文件时检查还是仅在应用程序启动时检查,等等。

最佳答案

Is there a way to detect how much space the app has used up out of its total allocated space?

应用程序对总分配空间没有限制,它们受限于设备上的空间量。您可以通过使用 NSFileManager 扫描目录来了解您为这些文件使用了多少空间。有几种方法可以以不同的方式执行此操作——例如,查看 enumeratorAtPath:。对于每个文件,使用类似 attributesOfItemAtPath:error: 的方法来获取文件大小。

更好的方法是在创建和删除文件时跟踪文件大小。保留运行总计,存储在用户默认值中。创建新文件时,将其增加新数据量。删除文件时,减少运行总计。

Additionally, what is the best way to go about cleaning those directories; do I check every time a file is written or only on app launch, ect ect.

如果这些文件是本地数据,是关联核心数据对象的固有部分,明智的做法是在删除文件的核心数据对象时删除文件。被管理对象需要数据文件,所以如果你还在使用该对象,不要删除该文件。这意味着必须有某种方式将两者联系起来,但我假设这已经是真的,因为你说这些文件以某种方式被托管对象使用。

如果文件类似于缓存数据,很容易重新创建或重新下载,您应该将它们放在 NSTemporaryDirectory() 返回的位置。然后 iOS 可以在认为需要空间时删除它们。您还可以在适当的时候清除旧文件,方法是扫描旧文件或一段时间未使用的文件(详细信息取决于您使用这些文件的方式)。

关于ios - 监控和维护应用程序在磁盘上的大小的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24984059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com