NSMetadataQuery
クラスは、Finder/Spotlightがメタデータを使ってファイルを検索する方法と思われます。SpotlightでファイルURLのNSArrayをフィルタリングする方法File Metadata Attributes/NSMetadataQuery?
NSMetadataQuery class provided by the Foundation framework. Queries can be run in two modes: asynchronous, and asynchronous with live updates. The first simply performs the search on the files that exist at the time of the initial search. The latter continues to search. updating the data as the files that fulfill or no longer fulfill the search parameters update.
しかし、それは(searchScopes
)ディレクトリを提供周り指向ようで、その後、非同期的にこれらのディレクトリ(NSMetadataQueryDidFinishGathering
)で発見された結果を返します。
私はすでにファイルを含むNSArrayを持っています。 Spotlight Searchと同じメタデータとクエリ構文を使用して、これらのNSURLのフィルタ/検索を構成したいと思います。しかし、ディレクトリを提供し、非同期の結果を受け取るのではなく、ファイルのリストを迅速にファイラーに提供します。それは、標準NSPredicate検索ではなく、ファイルのメタデータフィルタを使用して、エラーを投げているが
// Something like this...
let imageFileTypePredicate = NSPredicate(fromMetadataQueryString: "(kMDItemGroupId = 13)")
let imageURLs = allURLs.filter{ imageFileTypePredicate.evaluate(with:$0) };
、:
this class is not key value coding-compliant for the key _kMDItemGroupId.
メタデータは、私がここにリストされていることにより、フィルタリングに興味がある属性のスポットライト:
https://developer.apple.com/library/content/documentation/CoreServices/Reference/MetadataAttributesRef/Reference/CommonAttrs.html#//apple_ref/doc/uid/TP40001694-SW1
ファイルURLの配列をSpotlightメタデータでフィルタリングするにはどうすればよいですか?