我正在构建一个允许用户将视频拖放到其上的应用程序。给定一个已删除的 NSURL*s 列表,我如何确保每个都符合public.movie
UTI 类型?
如果我有一个NSOpenPanel
,我会使用openPanel.allowedFileTypes = @[@"public.movie"];
它,而 Cocoa 会为我处理它。
提前致谢!
我正在构建一个允许用户将视频拖放到其上的应用程序。给定一个已删除的 NSURL*s 列表,我如何确保每个都符合public.movie
UTI 类型?
如果我有一个NSOpenPanel
,我会使用openPanel.allowedFileTypes = @[@"public.movie"];
它,而 Cocoa 会为我处理它。
提前致谢!
这应该有效:
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
方法。)
斯威夫特版本:
do {
var value: AnyObject?
try url.getResourceValue(&value, forKey:NSURLTypeIdentifierKey)
if let type = value as? String {
if UTTypeConformsTo(type, kUTTypeMovie) {
...
}
}
}
catch {
}
斯威夫特 5 版本:
if let resourceValues = try? localUrl.resourceValues(forKeys: [URLResourceKey.typeIdentifierKey]) {
if let typeId = resourceValues.typeIdentifier {
if UTTypeConformsTo(type, kUTTypeMovie) {
...
}
}
}