2012-09-19 15 views
7

Sto costruendo un'app che consente agli utenti di rilasciare video su di esso. Dato un elenco di NSURL * s persi, come posso assicurarmi che ognuno di essi sia conforme al tipo UTI public.movie?Controlla NSURL per UTI/tipo file

Se avessi un NSOpenPanel, vorrei solo utilizzare openPanel.allowedFileTypes = @[@"public.movie"]; e Cocoa si prenderà cura di esso per me.

Grazie in anticipo!

risposta

17

Questo dovrebbe funzionare:

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 
    } 
} 

(È anche possibile utilizzare UTTypeConformsTo() invece del metodo NSWorkspace.)

+0

Come si fa a fare questo su iOS? '' 'NSWorkspace''' richiede' '' AppKit''' che è disponibile solo su '' 'macOS'''. Grazie. – Supertecnoboff

+0

Trovato la risposta alla mia stessa domanda - per iOS: https://stackoverflow.com/a/5815629/1598906 – Supertecnoboff

0

versione Swift:

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