2011-11-17 85 views
4

隨着iCloud的,我成立了像這樣一個MetaDataQuery:如何監控本地文件目錄NSMetaDataQuery

[query setSearchScopes:[NSArray arrayWithObject:NSMetadataQueryUbiquitousDocumentsScope]]; 

如何設置相同的MetaDataQuery我的本地正常文件目錄?

下面的代碼會給我一個靜態的我的目錄中的文件列表 - 但我正在尋找一種更加動態的方式,以便我可以使用NSMetadataQueryDidUpdateNotification

這裏是我的靜態代碼查找文件在我documentsDirectory:

NSArray* localDocuments = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: 
          [self documentsDirectory] error:nil]; 

NSArray *onlyPQs = [localDocuments filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self ENDSWITH '.pq'"]]; 

NSLog(@"local file count: %i", [onlyPQs count]); 

for (int i=0; i < [onlyPQs count]; i++) { 
    NSLog(@"LOCAL:%@", [onlyPQs objectAtIndex:i]); 
} 

回答

5

我一直在尋找一個回答這個問題,並根據文檔(Searching iCloud and the Desktop),這是不可能的:

與桌面不同,iOS應用程序的沙盒不可搜索 使用元數據類。爲了搜索您的應用程序的 沙盒,您需要使用NSFileManager類遞歸地遍歷沙箱文件 系統中的文件。

在Mac OS X三個附加範圍被定義:NSMetadataQueryUserHomeScopeNSMetadataQueryLocalComputerScopeNSMetadataQueryNetworkScope其可用於實現這一目標。

+0

不幸的是,在iOS 8中仍然正確。 – idmean