2011-11-23 55 views
2

使用AQGridview和蘋果提供DocInteraction示例,我可以表示我的應用程序包中的文件和通過iTunes提供的文件,位於我應用程序的文檔目錄中,格式爲杜)。如果我連接我的iPad並通過iTunes添加文件,它會添加它,但是當我從iTunes中刪除文件並且應用程序仍處於打開狀態時,它不會從網格或陣列中刪除文件。當我點擊文件時,它甚至不會引發錯誤,它只是打開一個空白或空白的文件。如果該項目在iTunes(或文檔目錄)中也不存在,我如何使用foreach或forin循環從數組中刪除項目(因爲我知道這最終是答案)?NSArray:檢測並刪除不存在的對象(文件)

編輯:在AQGridView的上下文中,我的代碼正在檢測文檔目錄中的更改,並更新對象的NSMutableArray,但更改未反映在網格上。在這種情況下,[self.gridView deleteItemsAtIndices:<#(NSIndexSet *)#> withAnimation:<#(AQGridViewItemAnimation)#>];方法似乎不起作用。

回答

2

我假設你的NSArray充滿了NSString的路徑。

NSArray *existingPaths = [paths filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(NSString *path, NSDictionary *bindings){ 
    return [[NSFileManager defaultManager] fileExistsAtPath:path]; 
}]]; 
+0

2011-11-23 16:46:47.135 SheetMuse [4570:707] - [__ NSGlobalBlock__ evaluateWithObject:]:無法識別的選擇發送到實例0x46578 2011-11-23 16:46:47.140 SheetMuse [4570: 707] ***由於未捕獲的異常'NSInvalidArgumentException',原因:' - [__ NSGlobalBlock__ evaluateWithObject:]:無法識別的選擇器發送到實例0x46578' – CodaFi

+0

我終於忘記了NSPredicate構造函數。我改變了我的答案。 –

+0

好的,我正在測試它。到現在爲止還挺好。 編輯:沒有骰子!對不起,但我認爲它更多的與 - (void)directoryDidChange:(DirectoryWatcher *)folderWatcher方法沒有被調用。感謝您的回答,我確信它會幫助別人。 – CodaFi