将mimetype转换为文件扩展名

Faw*_*waz 3 xcode file-extension nsurlconnection mime-types

如何将mimetype转换为xcode中的文件扩展名,例如我有此代码

File Extension     MIME Type

aifc                audio/x-aiff
avi                 video/x-msvideo
gz                  application/x-gzip
jpg                 image/jpeg
Run Code Online (Sandbox Code Playgroud)

Xcode

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
        NSString *mime      = [response MIMEType];
        NSString *extension = @"" // how to covert it ?!
}
Run Code Online (Sandbox Code Playgroud)

小智 5

包含<MobileCoreServices/MobileCoreServices.h><CoreServices/CoreServices.h> 仅遵循以下代码:

CFStringRef mimeType = (CFStringRef)@"audio/x-aiff";
CFStringRef uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType, NULL);
CFStringRef extension = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassFilenameExtension);
Run Code Online (Sandbox Code Playgroud)


ale*_*los 5

斯威夫特4:

导入核心服务

response.mimeType // is Optional<String> - some : "audio/mpeg"
Run Code Online (Sandbox Code Playgroud)

获取mp3的方法是:

guard let mime = response.mimeType,
      let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mime as CFString, nil),
      let ext = UTTypeCopyPreferredTagWithClass(uti.takeRetainedValue(), kUTTagClassFilenameExtension) else {
   return
}

ext.takeRetainedValue() // is "mp3"
Run Code Online (Sandbox Code Playgroud)

PD:考虑到 Xcode 不会获得未知文件的扩展名,例如 .Storyboard 或 .cert,在这种情况下将在 Guard 返回中退出。