我正在编写一个swift程序,我想使用swift列出给定文件夹的所有元数据。据我了解,我需要NSMetadataItem
。 reference doc of NSMetadataItem对我来说不是很清楚,所以我不能在这里编写代码示例。如何列出文件夹的所有元数据?
答案 0 :(得分:2)
使用文件夹的NSURL初始化NSMetadataItem的新实例:
let item = NSMetadataItem(URL: folderURL)
然后安全地打开值:
if let item = item,
attributes = item.valuesForAttributes(item.attributes) {
print(attributes)
}
此处attributes
是文件夹元数据属性的[String : AnyObject]
字典,例如:
[“_ kTimeMachineIsCreationMarker”:1,“kMDItemFSCreationDate”:2015-03-09 11:49:57 +0000,“_ kTimeMachineOldestSnapshot”:2016-01-29 14:50:21 +0000,“kMDItemFSNodeCount”:4, “kMDItemFSTypeCode”:0,“kMDItemFSLabel”:0,“kMDItemFSContentChangeDate”:2015-05-05 15:24:42 +0000,“kMDItemFSOwnerGroupID”:20,“kMDItemFSFinderFlags”:0,“kMDItemFSName”:共享的游乐场数据,“ kMDItemContentCreationDate“:2015-03-09 11:49:57 +0000,”kMDItemKind“:档案,”kMDItemFSIsExtensionHidden“:0,”_ kTimeMachineNewestSnapshot“:4001-01-01 00:00:00 +0000,”kMDItemFSOwnerUserID“:501 ,“kMDItemFSInvisible”:0,“kMDItemContentTypeTree”:< __ NSArrayI 0x7f9fdbc05b70>( public.folder, public.directory, public.item ) ,“kMDItemContentModificationDate”:2015-05-05 15:24:42 +0000,“kMDItemContentType”:public.folder,“kMDItemDateAdded”:2015-03-09 11:49:57 +0000,“kMDItemDisplayName”:共享的游乐场数据,“kMDItemFSCreatorCode”:0]
答案 1 :(得分:1)
您可以扩展NSURL以从您的网址获取所有元数据,如下所示:
extension NSURL {
var metadataItemAttributes: [String]? {
return NSMetadataItem(URL: self)?.attributes
}
var creationDateValue: NSDate? {
return NSMetadataItem(URL: self)?.valueForAttribute(NSMetadataItemFSCreationDateKey) as? NSDate
}
var modifiedDateValue: NSDate? {
return NSMetadataItem(URL: self)?.valueForAttribute(NSMetadataItemFSContentChangeDateKey) as? NSDate
}
var nameValue: String? {
return NSMetadataItem(URL: self)?.valueForAttribute(NSMetadataItemFSNameKey) as? String
}
var displayNameValue: String? {
return NSMetadataItem(URL: self)?.valueForAttribute(NSMetadataItemDisplayNameKey) as? String
}
var fileSizeValue: Int? {
return (NSMetadataItem(URL: self)?.valueForAttribute(NSMetadataItemFSSizeKey) as? NSNumber)?.integerValue
}
}
测试:
let desktopURL = NSFileManager.defaultManager().URLsForDirectory(.DesktopDirectory, inDomains: .UserDomainMask).first!
print(desktopURL.creationDateValue)