3

2 番目の処理の前に配列をフィルター処理するソリューションを探しています。これは、それ以上のテストなしで適用できます。

特定のフォルダーから 500K を超えるすべてのファイルを削除したいとします。私はできた:

1) 列挙子を取得し、すべてのアイテムについてサイズをテストし、大きなファイルを削除します。2) 列挙子を取得してフィルタリングし、残りのファイルをすべて削除します。

解決策 2 の実装方法を知りたいです。画像の縮小など、複数回適用できる別の処理 (今回は削除なし) を考えています。ループごとにファイル サイズが減少し、列挙子は空になるまで常に小さくなります。この時点で治療は終了です。

しかし、これを行う方法は?@"SELF contains[c] 'e'" (わずかなバリエーションあり) のような述語の例を数多く見てきましたが、SELF.size > 500000 はありません…</p>

解決策はブロックかもしれませんが、完全に迷っていることを告白しなければなりません...

助けてください!

4

2 に答える 2

6

+[NSPredicate predicateWithBlock:]ファクトリーメソッドを使ってみてはどうですか? YES保持したい項目 (例: 500000 バイト/文字/… 未満) を返します。

于 2013-04-24T08:12:46.703 に答える
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;
}];
于 2013-04-29T01:25:42.073 に答える