Расширение пути и тип MIME файла в swift
Я изучаю swift ,и я сделал таблицу с ячейками, которые показывают изображение, и классы в группах по типу MIME (используя расширение пути). У меня был вопрос о продлениях. Если изображения (например, это может быть видео или pdf) взяты из интернета, я не уверен, есть ли у них расширение или нет Как я могу получить тип файла внутри моей файловой системы без использования расширения пути ? PS :извините за мой плохой английский, это не мой родной язык
3 ответов
предполагая, что вы получаете свои данные как NSData, следуйте этому сообщению:https://stackoverflow.com/a/5042365/2798777
в Swift, например:
var c = [UInt32](count: 1, repeatedValue: 0)
(data as! NSData).getBytes(&c, length: 1)
switch (c[0]) {
case 0xFF, 0x89, 0x00:
println("image")
case 0x47:
println("gif")
default:
println("unknown: \(c[0])")
}
Если кто-то хочет получить MimeType из фактического URL-адреса файла, этот код работал для меня:
import MobileCoreServices
func mimeTypeForPath(path: String) -> String {
let url = NSURL(fileURLWithPath: path)
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension! as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
}
return "application/octet-stream"
}
чтобы получить расширение от UTI, вот Swift 4.1 код:
import AVFoundation
extension AVFileType {
/// Fetch and extension for a file from UTI string
var fileExtension: String {
if let ext = UTTypeCopyPreferredTagWithClass(self as CFString, kUTTagClassFilenameExtension)?.takeRetainedValue() {
return ext as String
}
return "None"
}
}
mov на com.apple.quicktime-movie