2012-09-19 11 views
7

Buduję aplikację, która pozwala użytkownikom na umieszczanie na niej filmów wideo. Biorąc pod uwagę listę upuszczonych NSURL * s, w jaki sposób mogę się upewnić, że każdy z nich jest zgodny z typem UTI public.movie?Sprawdź NSURL pod kątem UTI/typ pliku

Gdybym miał NSOpenPanel, po prostu użyłbym openPanel.allowedFileTypes = @[@"public.movie"]; i Cocoa zajmie się tym dla mnie.

Z góry dziękuję!

Odpowiedz

17

To powinno działać:

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

(Można również użyć UTTypeConformsTo() zamiast metody NSWorkspace.)

+0

Jak można to zrobić na iOS? '' 'NSWorkspace''' wymaga' '' AppKit''', który jest dostępny tylko w '' 'macOS'''. Dzięki. – Supertecnoboff

+0

Znalazłem odpowiedź na własne pytanie - na iOS: https://stackoverflow.com/a/5815629/1598906 – Supertecnoboff

0

wersję SWIFT:

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