ios - Cómo encontrar la UTI de archivo para archivo, sin extensión de ruta, en una ruta en Swift
xcode swift2 (1)
Puede usar el método
URL
resourceValues(forKeys:)
para obtener el archivo
URL TypeIdentifierKey
que devuelve el identificador de tipo uniforme de archivo (UTI).
Solo necesita verificar si el valor devuelto es "com.apple.m4v-video" para videos, "public.jpeg" o "public.png" para imágenes, etc.
Puede agregar una extensión de propiedad typeIdentifier a la URL para devolver el valor de cadena TypeIdentifierKey de la siguiente manera:
Xcode 9 • Swift 4 o Xcode 8.3.2 • Swift 3.1
extension URL {
var typeIdentifier: String? {
return (try? resourceValues(forKeys: [.typeIdentifierKey]))?.typeIdentifier
}
var localizedName: String? {
return (try? resourceValues(forKeys: [.localizedNameKey]))?.localizedName
}
}
He estado tratando de convertir este código que tenía de este example (en Objective-c) sin suerte.
String *path; // contains the file path
// Get the UTI from the file''s extension:
CFStringRef pathExtension = (__bridge_retained CFStringRef)[path pathExtension];
CFStringRef type = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension, NULL);
CFRelease(pathExtension);
// The UTI can be converted to a mime type:
NSString *mimeType = (__bridge_transfer NSString *)UTTypeCopyPreferredTagWithClass(type, kUTTagClassMIMEType);
if (type != NULL)
CFRelease(type);
Mi código es este
import MobileCoreServices
let path: String?
let pathExt = path.pathExtension as CFStringRef
let type = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension, NULL);
let mimeType = UTTypeCopyPreferredTagWithClass(type, kUTTagClassMIMEType)
if type != Null
CFRelease(type)
Todo lo que quiero hacer es averiguar si un archivo es una imagen o un archivo de video