Objective-cでContent-Type(MIME TYPE)を調べる方法

前回Rubyで調べる方法を書いたので今度はObjective-c版。ついでにファイル名や拡張子を取得する方法も。

// 対象のファイルのフルパス
NSString* filePath = @"/Users/Hoge/Desktop/memo.pdf";

// ファイル名を取得
NSString *fileName = [filePath lastPathComponent];

// 拡張子を取得
NSString *fileExtension = [filePath pathExtension];

// フルパスからMIMEタイプを取得
+ (NSString*) mimeTypeForFileAtPath: (NSString *) path {
    if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
        return nil;
    }
    CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)[path pathExtension], NULL);
    CFStringRef mimeType = UTTypeCopyPreferredTagWithClass (UTI, kUTTagClassMIMEType);
    CFRelease(UTI);
    if (!mimeType) {
        return @"application/octet-stream";
    }
    return [NSMakeCollectable((NSString *)mimeType) autorelease];
}

参考

やっぱRubyの方が楽だな。色々やってる人が多いし。(俺のサーチ力不足だろうけど)