我一直在想办法为文件提供自定义元数据。这方面的一个例子是给files标记,但这并不是我想要应用的唯一一种自定义元数据。我看过几篇这样的帖子-向jpeg文件添加自定义元数据,我可以向文件添加自定义元数据吗?,将自定义元数据设置为任何类型的文件,但它们都处理Objective-C以外的语言,这是我试图用于自定义元数据的语言。我查看了苹果的文档,如文件元数据属性参考和NSMetadataItem类参考,但没有发现任何与自定义元数据相关的内容。
我的问题主要是,是否可以将自定义元数据应用于文件?如果可以,我将如何进行?
您还可以将元数据存储在文件的资源叉中,这是一种MacOS9及更早版本的处理相关数据的方式。这只能在HFS+格式的卷下工作,并且会在其他文件系统(如NFS)下创建两个文件。同样简单的unix工具,如cat FILE1>FILE2,只会复制数据部分,并可能破坏目的。我不建议这样做。
或者,你可以对文件使用所谓的扩展属性,例如,查找器会记住你下载特定文件的位置,这样它就可以询问你是否真的想在第一次启动时执行下载的文件。(请参见getxattr(2)、listxattr
从命令行:"xattr"或"ls-l@"从C:getxattr()、listxattr
我想为iOS做同样的事情。
xattr库看起来正是适合该作业的工具。谢谢你的小费。虽然它是基于c的,但我将使用它来创建一个支持自定义元数据的objc iOS文件对象类。xattr在后台使用了void*,因此我的自定义元数据字典可以支持NSString键和NSCoding值,这将非常灵活。
这应该是一个很好的实用程序。在我的脑海中,为保存的文件存储MIME类型、校验和或相关的下载URL可能很有用。更一般地说,我可以使用文件对象类来实现文件元数据以外的实用程序,例如创建一个文件,同时在其路径中自动创建任何必要的文件夹。
这篇文章包括Swift代码来读取和写入扩展文件属性:
编写扩展文件属性swift示例