2011-11-23 54 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