在将某个文件下载到我的应用程序之前,我正在尝试获取可用磁盘空间。在iOS 11
我按照以下方式执行此操作
let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
if #available(iOS 11.0, *) {
// Running iOS 11 OR NEWER
let pathURL = URL(fileURLWithPath:paths.last!)
do {
let values = try pathURL.resourceValues(forKeys: [.volumeAvailableCapacityKey])
if let capacity = values.volumeAvailableCapacityForImportantUsage {
return capacity;
} else {
return nil;
}
} catch {
return nil
}
}
现在我的问题是 -
volumeAvailableCapacityKey
,volumeAvailableCapacityForImportantUsageKey
和volumeAvailableCapacityForOpportunisticUsageKey
之间有什么区别?我应该使用什么来获取设备中的实际可用空间?
答案 0 :(得分:1)
根据Apple文档:
<强> volumeAvailableCapacityKey 强>
卷的可用容量的密钥(以字节为单位)(只读)<强> volumeAvailableCapacityForImportantUsageKey 强>
用于存储重要数据的卷的可用容量(以字节为单位)的键 资源(只读)<强> volumeAvailableCapacityForOpportunisticUsageKey 强> 用于存储非必要资源的卷的可用容量(以字节为单位)的密钥(只读)
<强> volumeTotalCapacityKey 强>
卷的总容量的密钥(以字节为单位) (只读)
我建议你仔细阅读Apple doc。它强调:
概述
在尝试在本地存储大量数据之前,请先验证您是否有足够的存储容量。要获取卷的存储容量,请构造一个URL(使用URL实例),该URL引用要查询的卷上的对象,然后查询该卷。
决定使用哪种查询类型
要使用的查询类型取决于要存储的内容。如果您根据应用程序需要正常运行的用户请求或资源来存储数据(例如,用户即将观看的视频或游戏中下一级所需的资源),请查询{{1 }}。但是,如果您以更具预测性的方式下载数据(例如,下载用户最近一直在观看的电视连续剧的新可用剧集),请查询
volumeAvailableCapacityForImportantUsageKey
。
确实是一个非常有趣的例子:
volumeAvailableCapacityForOpportunisticUsageKey