2016-11-11 7 views
1

私は、Mac OS上で最初のアプリを書いていると私は私のMac上のすべてのXCodeファイル(プロジェクト)を見つけるしたいと思いますが。だから私はいくつかのコードを書いた:NSMetadataItemのURLを取得する方法 - MacOSのココアスウィフト3

NotificationCenter.default.addObserver(self, selector: #selector(initalGatherComplete(notification:)), name: NSNotification.Name.NSMetadataQueryDidFinishGathering , object: nil) 

metadataQuery.searchScopes = [NSMetadataQueryLocalComputerScope] 
metadataQuery.predicate = NSPredicate(format: "kMDItemFSName contains %@ OR kMDItemFSName contains %@", argumentArray: [".xcworkspace", ".xcodeproj"]) 

metadataQuery.operationQueue = OperationQueue.main 
metadataQuery.start() 

それは正しく動作します。

["kMDItemContentTypeTree", "kMDItemContentType", "_kMDItemOwnerUserID", "kMDItemPhysicalSize", "kMDItemKind", "kMDItemDateAdded", "kMDItemContentCreationDate", "kMDItemContentModificationDate", "kMDItemLogicalSize", "kMDItemDisplayName", "kMDItemUsedDates", "kMDItemLastUsedDate", "kMDItemUseCount", "kMDItemFSName", "kMDItemFSSize", "kMDItemFSCreationDate", "kMDItemFSContentChangeDate", "kMDItemFSOwnerUserID", "kMDItemFSOwnerGroupID", "kMDItemFSNodeCount", "kMDItemFSInvisible", "kMDItemFSTypeCode", "kMDItemFSCreatorCode", "kMDItemFSFinderFlags", "kMDItemFSHasCustomIcon", "kMDItemFSIsExtensionHidden", "kMDItemFSIsStationery", "kMDItemFSLabel"] 

私は受け取った商品のURLをどのように取得するのですか?属性では、ファイルがディスク上にある場所は何も見つかりません。

答えて

4

あなたはパス属性を引き出すことにより、プロジェクトのためのURLを集めることができます。

var urls = [URL]() 
for result in metadataQuery.results { 
    if let item = result as? NSMetadataItem, 
     let path = item.value(forAttribute: NSMetadataItemPathKey) as? String { 
     urls.append(URL(fileURLWithPath: path)) 
    } 
} 
関連する問題