我正在try 编写一段代码,而不是判断许多不同类型的图像文件的文件扩展名,而是查看文件属性.从搜索文档中我无法弄清楚的是,KIND:Image到底是一个文件属性,还是苹果在FinderApp中创建的一个 struct ,目的是让用户更容易操作.

我编写了一个代码片段,获取扩展名为jpeg的文件的属性,每个文件的文件类型都返回为NSFileTypeRegular.

let attr = try filemanager.attributesOfItem(atPath: pathConfig+"/"+file) as NSDictionary

if file.hasSuffix(ext) {

   print ("Adding \(file) [ \(attr.fileSize()) \(attr.fileType())]")

   print ( attr.fileModificationDate() )
}

有人知道MacOS是否保留了文件所属类别的属性吗?例如IMAGEDOCUMENT等.

推荐答案

要实现类似于Finder中Kind搜索标记的功能,您可以使用UTType(Link to reference).

您可以通过使用文件扩展名对文件进行初始化来获得文件的UTType:

let fileType = UTType(filenameExtension: fileURL.pathExtension)

UTTypes很酷的一点是它们可以有一个层次 struct ,所以UTType.jpegUTType.image的一个子类型.

如果您想判断文件是否为任何类型的图像,您可以这样做

let isImage = fileType.conforms(to: .image)

您可以在列表中查看您希望支持的类型类型,并使用这UTTypes种类型进行筛选

Swift相关问答推荐

WWDC Swift并发会话中的厨房服务示例令人困惑

传递给SWIFT ResultBuilder的闭包中结果类型的对象

如何才能在同一线程上调用类中的每个方法,而不对每个调用使用同步块?

从任务中打印

如何增加 NSStatusBar 图像大小?

字符串和整数格式的for循环,帮忙!

为什么自定义串行队列的目标是全局队列时,Swift中不会并发执行?

ForEach within List:模式的好处?

如何在 SwiftUI 中用图像替换占位符文本?

类型 '()' 不能符合 View (除非它肯定是 View,这次没有恶作剧)

SwiftUI 4 列表初始化程序在 iOS 中不可用

不要从 NumberFormatter 获取货币符号

Swift - 如何更新多目录中的对象

Swift 2.0 方法不能标记为@objc,因为参数的类型不能在 Objective-C 中表示

我将哪种 Swift 数据类型用于货币

Swift 自定义字体 Xcode

Swift 3.0 的 stringByReplacingOccurencesOfString()

更改在变量的 willSet 块中设置的值

WKWebView 确实从本地文档文件夹加载资源

swift中静态函数和单例类的区别