如何过滤数组并只保留以 .png 结尾的字符串

How to filter array and let stay only strings end with .png

我正在从文件夹中读取文件,文件夹包含 .pngs 但我在每个文件夹中另外得到 Thumb.db 文件,其他所有文件都是 .png。我阅读的内容为

NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];

如何删除数组中包含 .db 的所有文件或仅保留以 .png 结尾的文件?

试试这个代码:

    NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];
    NSMutableArray *imageArray = [[NSMutableArray alloc] init];

    for (NSString *path in directoryContent) 
    {
       if ([path hasSuffix:@".png"]) 
       {
          [imageArray addObject: path];
       }
    }

    NSLog (@"Number of images : %d" , [imageArray count]);

Cocoa 中过滤数组的惯用方法是 NSPredicate:

NSArray *filtered = [directoryContent filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"pathExtension = png"]];
谓词中提到的

pathExtension 方法是 NSString 上的一种方法,它试图将字符串解释为文件系统路径,return 扩展名。

我认为通过使用 NSPredicate 方法你可以获得准确的值

NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];
NSString *str              = @".png"
NSPredicate *sPredicate    = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",str];
NSArray *predicateArray    = [directoryContent filteredArrayUsingPredicate:sPredicate];