用于监控和维护光盘上应用程序大小的解决scheme

我正在构build一个广泛使用CoreData的应用程序,并且我的许多模型都具有UIImage和NSData属性(用于图像和video)。 由于将数据直接存储到CoreData并不是一个好主意,所以我构build了一个文件pipe理器类,将文件写入文档目录中的不同存储桶,具体取决于创build的上下文和介质types。

我现在的问题是如何pipe理文档目录? 有没有办法来检测应用程序占用了多less空间? 另外,清理这些目录的最好方法是什么? 我每次检查文件是否写入,或仅在应用程序启动时检查等。

有没有办法来检测应用程序占用了多less空间?

应用程序对分配的总空间没有限制,它们受限于设备上的空间量。 你可以通过使用NSFileManager扫描目录来找出你为这些文件使用了多less空间。 有几种方法以不同的方式做到这一点 – 例如查看enumeratorAtPath: :。 对于每个文件,请使用像attributesOfItemAtPath:error:这样的方法attributesOfItemAtPath:error:来获取文件大小。

在创build和删除文件时,最好跟踪文件大小。 保持运行总量,存储在用户的默认值。 当你创build一个新文件时,增加新的数据量。 当你删除一个文件时,减less运行总数。

另外,清理这些目录的最好方法是什么? 我每次检查文件是否写入,或仅在应用程序启动时检查等。

如果这些文件是固有地属于关联核心数据对象的本地数据,则合理的方法是删除其核心数据对象被删除的文件。 托pipe对象需要数据文件,所以如果仍然使用该对象,则不要删除该文件。 这意味着必须有一些方法来链接这两个,但我认为这已经是事实,因为你说这些文件被pipe理对象以某种方式使用。

如果这些文件类似于caching的数据,这些数据很容易重新创build或重新下载,则应将其放在由NSTemporaryDirectory()返回的位置。 然后,iOS可以删除它们,当它认为需要的空间。 您也可以通过扫描较旧的文件或一段时间未使用的文件(具体取决于您如何使用这些文件)来清除旧文件。