0
我已經創建了一個NSMetadataQuery
搜索可通過聚焦所有的音頻,仿照下面的命令,它會返回大量結果:我可以阻止Spotlight NSMetadataQuery嗎?
mdfind kMDItemContentTypeTree == "public.audio"
這裏是我使用的代碼:
NSMetadataQuery * q = [[[NSMetadataQuery alloc] init] autorelease];
[q setPredicate:[NSPredicate predicateWithFormat:@"kMDItemContentTypeTree == 'public.audio'", nil]];
NSLog(@"%@", [[q predicate] predicateFormat]);
if ([q startQuery])
while ([q isGathering]) {
NSLog(@"Polling results: %i", [q resultCount]);
[NSThread sleepForTimeInterval: 0.1];
}
[q stopQuery];
}
出於某種原因,查詢似乎仍然在收集階段無限期的,從來沒有得到一個結果。我想知道爲什麼是這樣的情況下,是否有將阻塞線程在等待結果,最好避免輪詢更優雅的方式。
我的應用程序實際上不是基於可可但NSFoundation,因此到目前爲止還沒有事件循環。我意識到要處理Spotlight查詢的傳統方法是訂閱事件通知,但我不知道如何在等待一個塊,這做法似乎對於我而言有點矯枉過正。
要短語我的問題儘可能簡單,我可以阻止我的線程在等待NSMetadataQuery
結束初期收集階段?如果是這樣,怎麼樣?