2012-09-19 84 views
7

我正在構建一個允許用戶將視頻拖放到其上的應用程序。給定一個丟失的NSURL * s列表,我如何確保每個符合public.movie UTI類型?檢查NSURL的UTI /文件類型

如果我有一個NSOpenPanel,我只會使用openPanel.allowedFileTypes = @[@"public.movie"];和Cocoa會爲我照顧它。

在此先感謝!

回答

17

這應該工作:

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

(您也可以使用UTTypeConformsTo()代替NSWorkspace方法。)

+0

你如何在iOS上做到這一點? '''NSWorkspace'''需要'''AppKit''',它只能在'''macOS'''上使用。謝謝。 – Supertecnoboff

+0

找到我自己的問題的答案 - 對於iOS:https://stackoverflow.com/a/5815629/1598906 – Supertecnoboff

0

斯威夫特版本:

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