我正在寻找在第二次治疗之前过滤阵列的解决方案,无需进一步测试即可应用。
假设我要从给定文件夹中删除大于500K的所有文件。我可以:
1)获取一个枚举器,然后为每个项目测试大小并删除大文件; 2)获取一个枚举器,过滤它,然后删除所有剩余的文件。
我想知道如何实施解决方案2.我正在考虑另一种治疗方法(这次没有删除),如图像缩减,可以多次应用。在每个循环中,文件大小减小,枚举器总是变小,直到它为空。此时,治疗结束了。
但是怎么做?我见过许多谓词的例子,比如@“SELF包含[c]'e'”(带有小的变化)但从来没有SELF.size> 500000 ...
我认为解决方案可能是一个障碍,但我必须承认我完全迷失了......
请帮忙!
答案 0 :(得分:6)
如何使用+[NSPredicate predicateWithBlock:]
工厂方法?您将为要保留的项目返回YES
(例如,小于500000字节/字符/ ...)。
答案 1 :(得分: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;
}];