如何find文件的UTI文件,没有pathExtension,在Swift的path

我一直在试图转换这个代码,我从这个例子 (在Objective-c中)没有运气。

String *path; // contains the file path // Get the UTI from the file's extension: CFStringRef pathExtension = (__bridge_retained CFStringRef)[path pathExtension]; CFStringRef type = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension, NULL); CFRelease(pathExtension); // The UTI can be converted to a mime type: NSString *mimeType = (__bridge_transfer NSString *)UTTypeCopyPreferredTagWithClass(type, kUTTagClassMIMEType); if (type != NULL) CFRelease(type); 

我的代码是这样的

  import MobileCoreServices let path: String? let pathExt = path.pathExtension as CFStringRef let type = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension, NULL); let mimeType = UTTypeCopyPreferredTagWithClass(type, kUTTagClassMIMEType) if type != Null CFRelease(type) 

我想要做的是找出一个文件是一个图像还是一个video文件

您可以使用URL方法resourceValues(forKeys:)来获取文件URL TypeIdentifierKey ,它返回文件统一types标识符(UTI)。 您只需要检查video的返回值是“com.apple.m4v-video”,图片是否为“public.jpeg”或“public.png”等等。 您可以添加一个typeIdentifier属性扩展到URL来返回TypeIdentifierKeystring值如下:

Xcode 9•Swift 4Xcode 8.3.2•Swift 3.1

 extension URL { var typeIdentifier: String? { return (try? resourceValues(forKeys: [.typeIdentifierKey]))?.typeIdentifier } var localizedName: String? { return (try? resourceValues(forKeys: [.localizedNameKey]))?.localizedName } }