如何获取文件扩展名(比较)

时间:2012-12-01 13:57:26

标签: ios xcode nsstring compare

我正在将目录从dropbox解析为mutablearray,以便在表格视图中显示它。

我如何比较文件扩展名? (.doc,或.jpg,....)

if ([[NSString stringWithFormat:@"%@",[test objectAtIndex:indexPath.row]] isEqualToString:@"??????"] ) {

    [cell.extensionView setImage:[UIImage imageNamed:@"word.png"]];
}

isEqualToWhat?是否可以使用通配符?

1 个答案:

答案 0 :(得分:2)

除非您实际拥有格式,否则请勿使用stringWithFormat。如果您做了类似的事情,您的代码会更清晰:

NSString *filename = [text objectAtIndex:indexPath.row];
NSString *ext = [filename pathExtension];
if ([ext isEqualToString:@"doc"]) {
    [cell.extensionView setImage:[UIImage imageNamed:@"word.png"]];
} else if ([ext isEqualToString:@".jpg"]) {
    [cell.extensionView setImage:[UIImage imageNamed:@"jpeg.png"]];
}

有一种比设置这个大if-else块更好的方法。我想你有很多不同的扩展你想检查。使用扩展和图像设置字典。类似的东西:

NSDictionary *extensionThumbnails = @{
    @"doc" : [UIImage imageNamed:@"word.png"],
    @"xls" : [UIImage imageNamed:@"excel.png"],
    @"jpg" : [UIImage imageNamed:@"jpeg.png"]
};

为您拥有的每个扩展程序和图片添加条目。然后您的原始代码(现在使用现代Objective-C语法)变为:

NSString *filename = text[indexPath.row];
NSString *ext = [filename pathExtension];
UIImage *thumbnail = extensionThumbnails[ext];
if (!thumbnail) {
    thumbnail = [UIImage imageNamed:@"unknown.png"];
}
[cell.extensionView setImage:thumbnail];