Check NSURL for UTI / file type
macos, objective-c, video, xcode
Solution
This should work:
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
}
}
(You can also use `UTTypeConformsTo()` instead of the `NSWorkspace` method.)
Problem
I'm building an app that allows users to drop videos onto it. Given a list of dropped NSURL*s how do I make sure each one conforms to the `public.movie` UTI type? If I had an `NSOpenPanel`, I would just use `openPanel.allowedFileTypes = @[@"public.movie"];` and Cocoa would take care of it for me. Thanks in advance!