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