关于objective C:检查 NSURL 的 UTI / 文件类型 | 珊瑚贝

Check NSURL for UTI / file type


我正在构建一个允许用户将视频拖放到其上的应用程序。给定一个已删除 NSURL*s 的列表,我如何确保每个都符合 public.movie UTI 类型?

如果我有一个 NSOpenPanel,我会使用 openPanel.allowedFileTypes = @[@”public.movie”];,而 Cocoa 会为我处理它。

提前致谢!


这应该可以工作:

1
2
3
4
5
6
7
8
9
10
11
12
13
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 方法。)

  • 你如何在 iOS 上做到这一点? NSWorkspace 需要 AppKit,它仅在 macOS 上可用。谢谢。
  • 找到了我自己的问题的答案 – 对于 iOS:stackoverflow.com/a/5815629/1598906


Swift 版本:

1
2
3
4
5
6
7
8
9
10
11
do {
    var value: AnyObject?
    try url.getResourceValue(&value, forKey:NSURLTypeIdentifierKey)
    if let type = value as? String {
        if UTTypeConformsTo(type, kUTTypeMovie) {
        …
        }
    }
}
catch {
}

Swift 5 版本:

1
2
3
4
5
6
7
if let resourceValues = try? localUrl.resourceValues(forKeys: [URLResourceKey.typeIdentifierKey]) {
    if let typeId = resourceValues.typeIdentifier {
        if UTTypeConformsTo(type, kUTTypeMovie) {
            …
        }
    }
}

来源:https://www.codenong.com/12503376/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?