有人可以解释什么是 URLResourceKeys 吗?
Can someone explain what URLResourceKeys are?
我正在查看 contentsOfDirectory(at:includingPropertiesForKeys:options:)
的文档
我特别关注论点 includingPropertiesForKeys
,它说:
An array of keys that identify the file properties that you want pre-fetched for each item in the directory. For each returned URL, the specified properties are fetched and cached in the NSURL object. For a list of keys you can specify, see Common File System Resource Keys.
单击 URLResourceKey 将我带到有关它的 Apple 文档。
而且我想知道,如果我传入 fileResourceTypeKey
、fileResourceIdentifierKey
和 creationDateKey
等键,我如何访问返回的 URL 列表中的那些(在调用 contentsOfDirectory(at:includingPropertiesForKeys:options:)
)?
而且我也对 URLResourceKey
枚举感到困惑 b/c 许多类型具有与其他键相似的描述和名称,例如:
documentIdentifierKey
vs fileResourceIdentifierKey
vs localizedNameKey
vs nameKey
localizedTypeDescriptionKey
对比 fileResourceTypeKey
对比 typeIdentifierKey
contentsOfDirectory(at:includingPropertiesForKeys:options:)
与 pathKey
返回的 url
比如这些键之间的区别是什么?
基本上我目前对文件系统的了解还很浅,所以请耐心等待我的 "simple" 问题。如果有人能解释所有这些键的含义以及我如何 access/use 它们,那就太好了!
首先URLResourceKey文档对属性信息的种类进行了很好的描述。例如 nameKey
returns 总是 Desktop
对于 URL 表示 ~/Desktop
而 localizedNameKey
returns 本地化名称 Schreibtisch
在德语系统上或 Bureau
在法语系统上。然而documentIdentifierKey
和fileResourceIdentifierKey
是完全不同的属性。
关于contentsOfDirectory(at:includingPropertiesForKeys:options:)
API: includingPropertiesForKeys
参数中传递的键告诉框架在获取内容时预取相应的属性,出于性能原因。例如
let contentURLs = try fileManager.contentsOfDirectory(at: anURL, includingPropertiesForKeys: [.nameKey, .fileSizeKey], options: .skipsHiddenFiles)
要读取属性,请在 URL 上调用 resourceValues(forKeys
,传递与 contentsOfDirectory
中相同的键。然后取resource key对应的属性的值。组合 URLResourceKey / URLResourceValues
的好处是您始终可以从文件属性中获得正确的类型。这避免了任何类型转换。
for fileURL in contentURLs {
do {
let fileAttributes = try fileURL.resourceValues(forKeys:[.nameKey, .fileSizeKey])
print(fileAttributes.name!) // is String
print(fileAttributes.fileSize!) // is Int
} catch { print(error, fileURL) }
}
我正在查看 contentsOfDirectory(at:includingPropertiesForKeys:options:)
我特别关注论点 includingPropertiesForKeys
,它说:
An array of keys that identify the file properties that you want pre-fetched for each item in the directory. For each returned URL, the specified properties are fetched and cached in the NSURL object. For a list of keys you can specify, see Common File System Resource Keys.
单击 URLResourceKey 将我带到有关它的 Apple 文档。
而且我想知道,如果我传入 fileResourceTypeKey
、fileResourceIdentifierKey
和 creationDateKey
等键,我如何访问返回的 URL 列表中的那些(在调用 contentsOfDirectory(at:includingPropertiesForKeys:options:)
)?
而且我也对 URLResourceKey
枚举感到困惑 b/c 许多类型具有与其他键相似的描述和名称,例如:
documentIdentifierKey
vsfileResourceIdentifierKey
vslocalizedNameKey
vsnameKey
localizedTypeDescriptionKey
对比fileResourceTypeKey
对比typeIdentifierKey
contentsOfDirectory(at:includingPropertiesForKeys:options:)
与pathKey
返回的 url
比如这些键之间的区别是什么?
基本上我目前对文件系统的了解还很浅,所以请耐心等待我的 "simple" 问题。如果有人能解释所有这些键的含义以及我如何 access/use 它们,那就太好了!
首先URLResourceKey文档对属性信息的种类进行了很好的描述。例如 nameKey
returns 总是 Desktop
对于 URL 表示 ~/Desktop
而 localizedNameKey
returns 本地化名称 Schreibtisch
在德语系统上或 Bureau
在法语系统上。然而documentIdentifierKey
和fileResourceIdentifierKey
是完全不同的属性。
关于contentsOfDirectory(at:includingPropertiesForKeys:options:)
API: includingPropertiesForKeys
参数中传递的键告诉框架在获取内容时预取相应的属性,出于性能原因。例如
let contentURLs = try fileManager.contentsOfDirectory(at: anURL, includingPropertiesForKeys: [.nameKey, .fileSizeKey], options: .skipsHiddenFiles)
要读取属性,请在 URL 上调用 resourceValues(forKeys
,传递与 contentsOfDirectory
中相同的键。然后取resource key对应的属性的值。组合 URLResourceKey / URLResourceValues
的好处是您始终可以从文件属性中获得正确的类型。这避免了任何类型转换。
for fileURL in contentURLs {
do {
let fileAttributes = try fileURL.resourceValues(forKeys:[.nameKey, .fileSizeKey])
print(fileAttributes.name!) // is String
print(fileAttributes.fileSize!) // is Int
} catch { print(error, fileURL) }
}