Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 使用URL显示文件的元数据_Swift_Cocoa_Interface Builder_Metadata - Fatal编程技术网

Swift 使用URL显示文件的元数据

Swift 使用URL显示文件的元数据,swift,cocoa,interface-builder,metadata,Swift,Cocoa,Interface Builder,Metadata,我正在构建一个macOS应用程序,并使用NSOpenPanel访问系统文件结构,这样我就可以访问任何文件并将其导入到我正在制作的应用程序中。我能够获取文件的URL以及所述URL的字符串,但我想知道是否有一种简单的方法可以在URL处提取文件元数据并将其显示在文本字段中?您可以使用CoreServices框架中的MDItem…函数: import Foundation import CoreServices let path = someURL.path if let mditem = MDIte

我正在构建一个macOS应用程序,并使用NSOpenPanel访问系统文件结构,这样我就可以访问任何文件并将其导入到我正在制作的应用程序中。我能够获取文件的URL以及所述URL的字符串,但我想知道是否有一种简单的方法可以在URL处提取文件元数据并将其显示在文本字段中?

您可以使用CoreServices框架中的
MDItem…
函数:

import Foundation
import CoreServices

let path = someURL.path
if let mditem = MDItemCreate(nil, path as CFString),
   let mdnames = MDItemCopyAttributeNames(mditem),
   let mdattrs = MDItemCopyAttributes(mditem, mdnames) as? [String:Any] {
    print(mdattrs)
    print("Creator: \(mdattrs[kMDItemCreator as String] as? String ?? "Unknown")")
} else {
    print("Can't get attributes for \(path)")
}

有关更多详细信息,请参阅核心服务框架的一节。

当您要处理文件时,请先检查。不过,元数据中没有任何内容,除非我遗漏了它。您指的是什么元数据?你看过URL文档了吗?看来你错过了是的,我看过URL文档,我确实找到了任何关于“元数据”的控件f。我所指的元数据类似于文件中的“创建者”、“解析”等。现在这正是我要寻找的!但我正在努力解决的一件事是从中提取具体数据。我可以看到我可以提取的所有类型的数据,但我实际上如何做呢?当我将一个变量初始化为kMDItemTitle,然后去打印这个变量时,它不起作用。我在这里遗漏了什么?我展示了一个获取创建者的示例。根据需要对其他
kMDItem…
值执行相同操作。但请注意,并非所有文件都具有所有元数据的值。但无论如何,它不会打印“未知”吗?我试着把它改成kMDItemTitle,但它仍然打印着“未知”。它肯定会有一个标题,但它不想为我工作。