讓我們想象一下,我需要知道在 1 周內運行了哪些應用程式。
終端查詢如下所示:
mdfind '(InRange(kMDItemFSContentChangeDate,$time.today(-7d),
$time.today( 1d)) && ((kMDItemContentTypeTree=com.apple.application) &&
InRange(kMDItemLastUsedDate,$time.today(-7d),$time.today( 1d))))'
所以我的查詢是:
'(InRange(kMDItemFSContentChangeDate,$time.today(-7d),
$time.today( 1d)) && ((kMDItemContentTypeTree=com.apple.application) &&
InRange(kMDItemLastUsedDate,$time.today(-7d),$time.today( 1d))))'
如何從swift 代碼運行此查詢語法并接收 URL/路徑作為查詢結果?
我已經搜索了 NSMetadataQuery 但看起來我不能將此搜索查詢用作其中的謂詞...
我錯過了什么嗎?
或者對于使用這種語法的查詢,我需要使用其他工具,而不是 NSMetadataQuery?
uj5u.com熱心網友回復:
呵呵,必須使用 MDQuery 而不是 NSMetadataQuery:
//set MDQuery string
let queryString = "(InRange(kMDItemFSContentChangeDate,$time.today(-7d),$time.today( 1d)) && ((kMDItemContentTypeTree=com.apple.application) && InRange(kMDItemLastUsedDate,$time.today(-7d),$time.today( 1d))))"
let query = MDQueryCreate(kCFAllocatorDefault, queryString as CFString, nil, nil)
//run the query
MDQueryExecute(query, CFOptionFlags(kMDQuerySynchronous.rawValue))
//loop through query results
for i in 0..<MDQueryGetResultCount(query) {
if let rawPtr = MDQueryGetResultAtIndex(query, i) {
let item = Unmanaged<MDItem>.fromOpaque(rawPtr).takeUnretainedValue()
//grab kMDItemPath value for each entry
if let path = MDItemCopyAttribute(item, kMDItemPath) as? String {
//search for certain TCC Protected Directory Paths
print(path)
}
}
}
(但也存在異步搜索!這是sycn版本)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/507415.html
上一篇:Vulkan無法加載層庫
