3

我正在寻找在第二次处理之前过滤阵列的解决方案,无需进一步测试即可应用。

假设我想从给定文件夹中删除所有大于 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 回答