2010-11-10 57 views
0

在Objective-C中,我設置了NSMetaDataQuery並設置setSearchScope:以使查詢搜索特定用戶的Documents文件夾。搜索起作用,但不會遞減目錄樹,只在Documents文件夾中搜索。
我試過通配符但沒有快樂。NSMetaDataQuery,將setSearchScope路徑設置爲遞歸?

這裏基本上是我已經嘗試,它的作品,除了不搜索下面的文件目錄:

query = [[NSMetadataQuery alloc] init]; 
[query setSearchScopes:[NSArray arrayWithObjects:@"/Users/username/Documents/",nil]]; 
[query setPredicate:[NSPredicate predicateWithFormat:@"(kMDItemFSContentChangeDate >= '$time.this_week')"]]; 
[query startQuery]; 

回答

0

我認爲你的問題可能是對/Users/username/Documents/的斜線。在處理Objective-C中的路徑時,框架永遠不會出現尾部斜線。幫助它脫下衣服嗎?

+0

沒想好。我確實嘗試過,並獲得了相同的結果。我一直在想,我可以用NSString定義路徑,但尚未解決。有很多方法可以管理NSString中的路徑,這是我在工作時發現的。 – Wilersh 2010-11-10 20:56:00

+0

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/ManipulatingPaths.html%23//apple_ref/doc/uid/20000152-BBCBIGHH – Wilersh 2010-11-10 20:56:59

1

我認爲問題出在你的NSPredicate格式字符串上。 (我的意思是寫這個!)本質上,您的$time.this_week將在Spotlight查詢中很好地工作,但不會作爲NSPredicate字符串。你要真正創建一個NSDate對象,並將其傳遞到查詢字符串像

[query setPredicate:[NSPredicate predicateWithFormat:@"(kMDItemFSContentChangeDate <= %@)", [NSDate date]]]; 

這裏是供您參考相關鏈接:

Comparison of NSPredicate and Spotlight Query Strings
Spotlight Query Expression Syntax
Predicate Format String Syntax