这很有帮助。如果有人正在寻找这个,这是我用来在 Swift 中实现它的代码:
let nf = NotificationCenter.default
//add background queue observer for updates during live phase
nf.addObserver(forName: NSNotification.Name.NSMetadataQueryDidUpdate, object: nil, queue: self.backGroundQueue, using:{_ in
self.query.disableUpdates()
self.resultsArray = self.query.results as! [ResultItem]
self.query.enableUpdates()
})
//add background queue observer for updates during gathering
nf.addObserver(forName: NSNotification.Name.NSMetadataQueryGatheringProgress, object: nil, queue: self.backGroundQueue, using:{_ in
self.query.disableUpdates()
self.resultsArray = self.query.results as! [ResultItem]
print("progressing... ")
print("number of results: \(self.query.results.count)")
self.query.enableUpdates()
})
//add background queue observer for finishing gathering phase
nf.addObserver(forName: NSNotification.Name.NSMetadataQueryDidFinishGathering, object: nil, queue: self.backGroundQueue, using:{_ in
self.query.disableUpdates()
self.resultsArray = self.query.results as! [ResultItem]
self.query.enableUpdates()
})
self.query.searchScopes = [self.thePath]
self.query.predicate = self.getPredicateToRun()
self.query.start()