2012-09-19 32 views
7

Estoy construyendo una aplicación que permite a los usuarios colocar videos en ella. Dada una lista de NSURL * s descartados, ¿cómo me aseguro de que cada uno cumpla con el tipo de UTI public.movie?Verificar NSURL para UTI/tipo de archivo

Si tuviera un NSOpenPanel, solo usaría openPanel.allowedFileTypes = @[@"public.movie"]; y Cocoa se encargaría de ello por mí.

¡Gracias de antemano!

Respuesta

17

Esto debería funcionar:

NSWorkspace *workspace = [NSWorkspace sharedWorkspace]; 

for (NSURL *url in urls) { 
    NSString *type; 
    NSError *error; 
    if ([url getResourceValue:&type forKey:NSURLTypeIdentifierKey error:&error]) { 
     if ([workspace type:type conformsToType:@"public.movie"]) { 
      // the URL points to a movie; do stuff here 
     } 
    } else { 
     // handle error 
    } 
} 

(También puede utilizar UTTypeConformsTo() en lugar del método NSWorkspace.)

+0

¿Cómo se hace esto en iOS? '' 'NSWorkspace''' requiere' '' AppKit''' que solo está disponible en '' 'macOS'''. Gracias. – Supertecnoboff

+0

Encontré la respuesta a mi propia pregunta - para iOS: https://stackoverflow.com/a/5815629/1598906 – Supertecnoboff

0

versión Swift:

do { 
    var value: AnyObject? 
    try url.getResourceValue(&value, forKey:NSURLTypeIdentifierKey) 
    if let type = value as? String { 
     if UTTypeConformsTo(type, kUTTypeMovie) { 
     ... 
     } 
    } 
} 
catch { 
}