Created
September 22, 2018 03:14
-
-
Save Arcovv/de5d0833aefc3fb0827924d9029bd9fd to your computer and use it in GitHub Desktop.
Get mime type using MobileCoreServices framework
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import MobileCoreServices | |
fileprivate let defaultMimeType = "application/octet-stream" | |
protocol PathExtensionable { | |
var pathExtension: String? { get } | |
} | |
extension URL : PathExtensionable { | |
var pathExtension: String? { | |
return NSURL(fileURLWithPath: self.path).pathExtension | |
} | |
} | |
extension String : PathExtensionable { | |
var pathExtension: String? { | |
return URL(string: self)?.pathExtension | |
} | |
} | |
extension PathExtensionable { | |
func mimeType() -> String { | |
guard let pathExt = pathExtension else { | |
return defaultMimeType | |
} | |
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExt as CFString, nil)?.takeRetainedValue() { | |
if let mimeType = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() { | |
return mimeType as String | |
} | |
} | |
return defaultMimeType | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment