如何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 4或Xcode 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 } }