2012-09-19 3 views
7

Je suis en train de créer une application qui permet aux utilisateurs de déposer des vidéos dessus. Compte tenu d'une liste de NSURL * s diminué comment puis-je m'assurer que chacun est conforme au type d'UTI public.movie?Check NSURL for UTI/type de fichier

Si j'avais un NSOpenPanel, j'utiliserais simplement openPanel.allowedFileTypes = @[@"public.movie"]; et Cocoa s'occuperait de moi.

Merci d'avance!

Répondre

17

Cela devrait fonctionner:

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

(Vous pouvez également utiliser UTTypeConformsTo() au lieu de la méthode NSWorkspace.)

+0

Comment faites-vous cela sur iOS? '' 'NSWorkspace''' nécessite' '' '' 'AppKit''' qui n'est disponible que sur' '' macOS'''. Merci. – Supertecnoboff

+0

Trouvé la réponse à ma propre question - pour iOS: https://stackoverflow.com/a/5815629/1598906 – Supertecnoboff

0

Version Swift:

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