检查 NSURL 的 UTI / 文件类型
Posted
技术标签:
【中文标题】检查 NSURL 的 UTI / 文件类型【英文标题】:Check NSURL for UTI / file type 【发布时间】:2012-09-19 21:45:38 【问题描述】:我正在构建一个允许用户将视频拖放到其上的应用。给定一个已删除 NSURL*s 的列表,我如何确保每个都符合 public.movie
UTI 类型?
如果我有NSOpenPanel
,我会使用openPanel.allowedFileTypes = @[@"public.movie"];
,Cocoa 会帮我处理。
提前致谢!
【问题讨论】:
【参考方案1】:这应该可行:
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:***.com/a/5815629/1598906【参考方案2】:
Swift 版本:
do
var value: AnyObject?
try url.getResourceValue(&value, forKey:NSURLTypeIdentifierKey)
if let type = value as? String
if UTTypeConformsTo(type, kUTTypeMovie)
...
catch
【讨论】:
【参考方案3】:Swift 5 版本:
if let resourceValues = try? localUrl.resourceValues(forKeys: [URLResourceKey.typeIdentifierKey])
if let typeId = resourceValues.typeIdentifier
if UTTypeConformsTo(type, kUTTypeMovie)
...
【讨论】:
以上是关于检查 NSURL 的 UTI / 文件类型的主要内容,如果未能解决你的问题,请参考以下文章
带有 UIDocumentPickerViewController 的 iOS 自定义 UTI/文件类型