有人可以解释一下URLResourceKeys是什么吗?

时间:2018-04-22 16:14:00

标签: swift nsfilemanager

我正在查看contentsOfDirectory(at:includingPropertiesForKeys:options:)

的文档

特别是我一直专注于论据includingPropertiesForKeys,其中说:

  

一组键,用于标识要为目录中的每个项目预取的文件属性。对于每个返回的URL,将在NSURL对象中提取和缓存指定的属性。有关您可以指定的密钥列表,请参阅通用文件系统资源密钥。

点击URLResourceKey向我发送了关于它的Apple文档。

我想知道,如果我传递了fileResourceTypeKeyfileResourceIdentifierKeycreationDateKey这样的密钥,我怎样才能访问返回的网址列表中的密钥(在调用contentsOfDirectory(at:includingPropertiesForKeys:options:)之后)?

我也对URLResourceKey enum b / c感到困惑,很多类型都有与其他键类似的描述和名称,如:

  • documentIdentifierKey vs fileResourceIdentifierKey vs localizedNameKey vs nameKey
  • localizedTypeDescriptionKey vs fileResourceTypeKey vs typeIdentifierKey
  • contentsOfDirectory(at:includingPropertiesForKeys:options:) vs pathKey
  • 返回的网址

这些键之间的区别是什么?

基本上我对文件系统的了解非常少,所以请耐心等待我的#34;简单"的问题。如果有人可以解释所有这些键的含义以及我如何访问/使用它们会很棒!

1 个答案:

答案 0 :(得分:2)

首先,here文档很好地描述了属性信息的类型。例如,对于代表Desktop的网址,~/Desktop始终返回localizedNameKey,而Schreibtisch则返回德语系统上的本地化名称BureaudocumentIdentifierKey上的fileResourceIdentifierKey法国制度。但是,contentsOfDirectory(at:includingPropertiesForKeys:options:)includingPropertiesForKeys属于完全不同的属性。

关于let contentURLs = try fileManager.contentsOfDirectory(at: anURL, includingPropertiesForKeys: [.nameKey, .fileSizeKey], options: .skipsHiddenFiles) API:resourceValues(forKeys参数中传递的密钥告诉框架在获取内容时预先获取相应的属性,这是出于性能原因。例如

contentsOfDirectory

要读取传递与URLResourceKey / URLResourceValues中相同键的URL上的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) } } 属性。然后使用资源键的相应属性获取值。组合{{1}}的好处是您始终可以从文件属性中获取正确的类型。这可以避免任何类型的转换。

{{1}}
相关问题