2013-04-18 117 views
3

我正在尋找解決方案來在第二次處理之前過濾數組,這可以在沒有進一步測試的情況下應用。過濾數組:謂詞?塊?

說我想從給定的文件夾中刪除大於500K的所有文件。我可以:

1)獲得一個枚舉器,然後對每個項目,測試大小並刪除大文件; 2)得到一個枚舉器,過濾它,然後刪除所有剩餘的文件。

我想知道如何實施解決方案2.我正在考慮另一種治療方法(這次沒有刪除),比如圖像縮小,可以多次應用。在每個循環中,文件大小都會減小,並且枚舉器總是變小,直到它爲空。此時,治療結束。

但如何做到這一點?我已經看到很多謂詞的例子,如@「SELF包含[c]'e'」(具有小的變化),但從來沒有一個SELF.size> 500000 ...

我想這個解決方案可能是一個塊,但我有承認我完全失去了...

請幫忙!

回答

3
NSPredicate *predicate = [NSPredicate predicateWithBlock: ^BOOL (id evaluatedObject, NSDictionary *bindings){ 
NSDictionary *fileDic =[_fm attributesOfItemAtPath:[evaluatedObject path] error: nil]; 
unsigned long long testSize = [[fileDic valueForKey:@"NSFileSize"]longLongValue]; 
return testSize > 500000; 
}]; 
6

如何使用+[NSPredicate predicateWithBlock:]工廠方法?您要爲要保留的項目返回YES(例如小於500000字節/字符/ ...)。

+0

謝謝楊,這就是我最後做的。看到我的答案。 – berfis

+0

真棒,歡呼! – ATV