【问题标题】:Applying Custom Metadata to Files将自定义元数据应用于文件
【发布时间】:2012-07-24 12:09:04
【问题描述】:

我一直在想办法给文件自定义元数据。这方面的一个例子是给文件标签,但这不是我想要应用的唯一类型的自定义元数据。我看过一些类似这样的帖子——Adding custom metadata to jpeg filesCan I add custom metadata to files?Set Custom Metadata to Files of any Type——但它们都处理除 Objective-C 之外的语言,这是我试图用于自定义的语言元数据。我查看了 Apple 的文档,例如 File Metadata Attributes ReferenceNSMetadataItem Class Reference,但我没有找到任何与自定义元数据相关的内容。

我的问题基本上是,是否可以将自定义元数据应用于文件,如果可以,我将如何去做?

【问题讨论】:

    标签: objective-c file metadata customization spotlight


    【解决方案1】:

    自定义元数据可以由自定义 MDImporter 创建。这是 Spotlight 的插件,允许操作系统查看/扫描/搜索自定义文档。因此,您的元数据最终会出现在聚光灯搜索索引中。但是,您的 Spotlight 导入器插件必须以某种方式从文件本身中提取元数据。

    您还可以将元数据存储在文件的资源分支中,这是 MacOS 9 和更旧的处理关联数据的方式。这仅适用于 HFS+ 格式的卷,并且会在 NFS 等其他文件系统下创建两个文件。同样简单的 unix 工具,例如 cat FILE1 > FILE2 只会复制数据部分并可能破坏目的。我不会推荐这个。

    或者您可以对文件使用所谓的扩展属性,例如,查找器会记住您从哪里下载特定文件的方式,因此它可以询问您是否真的想在第一次启动时执行下载。 (参见 getxattr(2)、listxattr(2)、removexattr(2) 和 setxattr(2) 或

    从命令行:“xattr”或“ls -l@” 从 C:getxattr()、listxattr()、removexattr() 和 setxattr()

    【讨论】:

    • 我认为 MDImporter 的想法正是我想要的。我将如何实际创建自定义 MDImporter?
    【解决方案2】:

    我想为 iOS 做同样的事情。

    xattr 库看起来正是适合这项工作的工具。谢谢你的提示。虽然它是基于 c 的,但我将使用它来创建一个支持自定义元数据的 objc iOS 文件对象类。 xattr 在后台使用 void*,因此我的自定义元数据字典可以支持 NSString 键和 NSCoding 值,这将非常灵活。

    这应该是一个很好的实用程序。在我的脑海中,存储 MIME 类型、校验和或已保存文件的相关下载 URL 可能很有用。更一般地说,我可以使用文件对象类来实现文件元数据以外的实用程序 - 例如,在创建文件的同时自动在其路径中创建任何必要的文件夹。

    【讨论】:

      【解决方案3】:

      这篇文章包含用于读写扩展文件属性的 Swift 代码:

      Write extend file attributes swift example

      【讨论】:

        猜你喜欢
        • 2023-03-06
        • 1970-01-01
        • 2019-12-21
        • 1970-01-01
        • 2017-01-28
        • 1970-01-01
        • 2017-01-23
        • 1970-01-01
        • 2018-01-04
        相关资源
        最近更新 更多