在 iOS 11 下,可以传递新的音量容量键,以URL.resourceValues(forKeys:)
提供与设备设置中可用的值相匹配的值。
static let volumeAvailableCapacityKey: URLResourceKey
卷可用容量的密钥(以字节为单位)(只读)。
static let volumeAvailableCapacityForImportantUsageKey: URLResourceKey
用于存储重要资源的卷可用容量的密钥(以字节为单位)(只读)。
static let volumeAvailableCapacityForOpportunisticUsageKey: URLResourceKey
用于存储非必要资源的卷可用容量的密钥(以字节为单位)(只读)。
static let volumeTotalCapacityKey: URLResourceKey
卷总容量的键(以字节为单位)(只读)。
来自苹果的文档:
概述
在您尝试在本地存储大量数据之前,请先确认您有足够的存储容量。要获取卷的存储容量,您需要构造一个 URL(使用 URL 的实例),该 URL 引用要查询的卷上的对象,然后查询该卷。
决定使用哪种查询类型
要使用的查询类型取决于存储的内容。如果您根据用户请求或应用程序正常运行所需的资源(例如,用户将要观看的视频或游戏中下一关所需的资源)存储数据,请查询volumeAvailableCapacityForImportantUsageKey
. 但是,如果您以更具预测性的方式下载数据(例如,下载用户最近观看的电视剧的新剧集),请查询volumeAvailableCapacityForOpportunisticUsageKey
.
构造查询
使用此示例作为构建您自己的查询的指南:
let fileURL = URL(fileURLWithPath:"/")
do {
let values = try fileURL.resourceValues(forKeys: [.volumeAvailableCapacityForImportantUsageKey])
if let capacity = values.volumeAvailableCapacityForImportantUsage {
print("Available capacity for important usage: \(capacity)")
} else {
print("Capacity is unavailable")
}
} catch {
print("Error retrieving capacity: \(error.localizedDescription)")
}