iphone - 如何遍历目录中的所有图像文件?

标签 iphone objective-c ios ipad filesystems

我的应用程序使用 iTunes 文件共享。用户可以将文件添加到 Documents 目录。

我必须阅读这些文件,但要确保它们只是图像,而不是文本文件或其他“垃圾”。

我如何遍历目录中的文件并仅识别那些是图像的文件?

我假设我必须这样做:

NSMutableArray *retval = [NSMutableArray array];

NSArray *files = [fileManager contentsOfDirectoryAtPath:documentsDirPath error:&error];
if (files == nil) {
    // error...
}

for (NSString *file in files) {
    if ([file.pathExtension compare:@"png" options:NSCaseInsensitiveSearch] == NSOrderedSame) {        
        NSString *fullPath = [documentsDirPath stringByAppendingPathComponent:file];
        [retval addObject:fullPath];
    }
}

但出于某些原因,这很糟糕。我需要一个 HUUUUUGE if 子句来捕获所有可能的图像文件类型,并且有 DOZENS 个。

是否有更智能的方法来真正收集所有图像 文件,无论是 .png、.bmp、.jpg、.jpeg、.jpeg2000、.tiff、.raw、.etc?

我稍微记得有一种文件属性告诉文件的一般类型。我相信有一些抽象的图像键。但也许有更好的方法?

最佳答案

可以,只需使用 Uniform Type Identifiers .在这里:

NSString *file = @"…"; // path to some file
CFStringRef fileExtension = (CFStringRef) [file pathExtension];
CFStringRef fileUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, NULL);

if (UTTypeConformsTo(fileUTI, kUTTypeImage)) NSLog(@"This is an image");

CFRelease(fileUTI);

关于iphone - 如何遍历目录中的所有图像文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6129340/

相关文章:

iphone - cocos2d如何组合 Sprite

android - Unicode 符号无法在移动设备中正确显示

ios - Obj-c - 同时返回两个自定义单元格

ios - 无法从内存堆栈中释放手势识别器

iphone - 我如何在cocos2d中使用动画?

iphone - 如何在 iPhone UIIMageView 上显示 GIF 图像

iphone - 从数据库中插入数据到表中

iphone - NSString 的大小 - Objective C

ios - NSDateFormatter 自动获取日期格式(Swift 2)

ios - 为什么我的可旋转轮控件有时会向错误的方向旋转?