Objective c 筛选NSFileManager内容以获取文件列表';模式';使用NSPredicate
我有一个字符串数组用作“过滤器”:Objective c 筛选NSFileManager内容以获取文件列表';模式';使用NSPredicate,objective-c,cocoa,nspredicate,nsfilemanager,Objective C,Cocoa,Nspredicate,Nsfilemanager,我有一个字符串数组用作“过滤器”: @[@"*.png", @".DS_Store", @"Foobar", @".jpg"] 如何使用上述模式使用NSPredicate过滤掉文件夹中的所有内容 到目前为止,我得到的是: NSArray *contents = [fileManager contentsOfDirectoryAtPath:fullPath error:NULL]; NSArray *filter = @[@"*.png", @".DS_Store", @"Foobar", @"
@[@"*.png", @".DS_Store", @"Foobar", @".jpg"]
如何使用上述模式使用NSPredicate过滤掉文件夹中的所有内容
到目前为止,我得到的是:
NSArray *contents = [fileManager contentsOfDirectoryAtPath:fullPath error:NULL];
NSArray *filter = @[@"*.png", @".DS_Store", @"Foobar", @".jpg"];
NSArray *contents = [contents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"((pathExtension IN[cd] %@) OR (lastPathComponent IN[cd] %@)) ", filter, filter]];
但这并没有给我想要的结果。例如,不过滤
png
文件。此外,我无法使其不区分大小写,因此不会过滤掉foobar
。您可以过滤那些您想要列出的内容。剩余的将自动过滤
-(void)filter
{
localSongs=[[NSMutableArray alloc]init];
NSArray * paths = NSSearchPathForDirectoriesInDomains ( NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
NSDirectoryEnumerator *de = [[NSFileManager defaultManager] enumeratorAtPath:documentsDirectory] ;
NSString *file;
while ((file = [de nextObject]))
if (([[file pathExtension] isEqualToString:@"MP3"]) || ([[file pathExtension]isEqualToString:@"mp4"]) || ([[file pathExtension]isEqualToString:@"mp3"]) || ([[file pathExtension]isEqualToString:@"mov"]) || ([[file pathExtension]isEqualToString:@"avi"]) )
[localSongs addObject:file.lastPathComponent];
NSLog(@"local files%@",localSongs);
}
您可以筛选要列出的内容。剩余的将自动过滤
-(void)filter
{
localSongs=[[NSMutableArray alloc]init];
NSArray * paths = NSSearchPathForDirectoriesInDomains ( NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
NSDirectoryEnumerator *de = [[NSFileManager defaultManager] enumeratorAtPath:documentsDirectory] ;
NSString *file;
while ((file = [de nextObject]))
if (([[file pathExtension] isEqualToString:@"MP3"]) || ([[file pathExtension]isEqualToString:@"mp4"]) || ([[file pathExtension]isEqualToString:@"mp3"]) || ([[file pathExtension]isEqualToString:@"mov"]) || ([[file pathExtension]isEqualToString:@"avi"]) )
[localSongs addObject:file.lastPathComponent];
NSLog(@"local files%@",localSongs);
}
看看
看看