UTType Reference
変換方法
変換はどちらの場合も一旦 UTIへの変換を経由する。
MIME Type (例:image/png) ↓ UTI(例:public.png) ↓ 拡張子(例:png)UTI への変換には UTTypeCreatePreferredIdentifierForTag() を使う。
逆に UTIからの変換には UTTypeCopyPreferredTagWithClass() を使う。
MIME Type から 拡張子を取得する場合はこんなコードになる。
CFStringRef uti = UTTypeCreatePreferredIdentifierForTag( kUTTagClassMIMEType, (CFStringRef)mimeTYpe, NULL); CFStringRef filenamExtension = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassFilenameExtension); : CFRelease(uti); CFRelease(filenameExtension);
どちらの関数も引数に UTTagClass を取る。これは次の2つが定義されている。
const CFStringRef kUTTagClassFilenameExtension; const CFStringRef kUTTagClassMIMEType;また取得した文字列は CFReleaseで開放してやる必要がある。
サンプル
こんな感じ。
UTType系関数をラップするユーティリティクラスを用意してみた。
@interface UTTypeUtility : NSObject {
}
+ (NSString*)filenameExtensionFromMimeType:(NSString*)mimeType;
+ (NSString*)mimeTypeFromFilename:(NSString*)filename;
+ (NSString*)mimeTypeFromFilenameExtension:(NSString*)filenameExtension;
+ (NSString*)UTIfromMimeType:(NSString*)mimeType;
+ (NSString*)UTIfromFilename:(NSString*)filename;
+ (NSString*)UTIfromFilenameExtension:(NSString*)filenameExtension;
@end中身はこんな感じ。
+ (NSString*)filenameExtensionFromMimeType:(NSString*)mimeTYpe
{
CFStringRef uti = UTTypeCreatePreferredIdentifierForTag(
kUTTagClassMIMEType, (CFStringRef)mimeTYpe, NULL);
NSString* filenamExtension =
(NSString*)UTTypeCopyPreferredTagWithClass(uti, kUTTagClassFilenameExtension);
CFRelease(uti);
return [filenamExtension autorelease];
}なお UTType系関数の利用には下記のフレームワークを追加する必要がある。
その上で MobileCoreServicesをインポートする。
#import <MobileCoreServices/MobileCoreServices.h>
ソースコード
GitHubからどうぞ。
UUTypeSample at 2010-08-10 from xcatsan's iOS-Sample-Code - GitHub
ソースコードはGitHubからどうぞ。
参考情報
- Able Pear Software: How to get the file extension for a mime type on iOS
- UTType関連の関数の使い方はここで知った。





Responses
Leave a Response