【问题标题】:Writing Spotlight metadata to files on OS X (specifically kMDItemDisplayName)将 Spotlight 元数据写入 OS X 上的文件(特别是 kMDItemDisplayName)
【发布时间】:2012-11-15 20:48:35
【问题描述】:

我看到 Ken T. 之前已经回答了这个问题,但是我有一个案例,代码似乎可以工作,并且对 setxattr() 的调用返回 0,但我要修改的项目没有改变。

具体来说,我正在尝试更改元数据属性 kMDItemDisplayName,我的调用看起来像这样(仿照 Ken T 发布的示例):

[注意:下面的“name”参数是一个NSString *]

rc = setxattr([pathString cStringUsingEncoding:NSUTF8StringEncoding],
                 "kMDItemDisplayName",
                 [name cStringUsingEncoding:NSUTF8StringEncoding],
                 [name lengthOfBytesUsingEncoding:NSUTF8StringEncoding],
                 0,
                 0);

对有问题的文件执行 mdls 表明存在 kMDItemDisplayName 属性,但我无法将其更改为实际文件名以外的任何内容(我认为这是默认行为)。

我是否误解了 setxattr() 应该如何工作?

非常感谢任何帮助。

哦,顺便说一句,我为什么要这样做?看来(通过检查 Bare Bones 的 Yojimbo 是如何做事的)Spotlight 使用 kMDItemDisplayName 值在查找器的 Spotlight 搜索结果菜单中列出文件,这是我想在我的应用程序中实现的。

谢谢!


嘿嘿嘿……等一下……

从命令行,执行 xattr -l 显示,据 xattr 所知,有一个名为 kMDItemDisplayName 的属性,这就是我设置的...但是,同一文件上的 mdls 仍然显示 kMDItemDisplayName属性作为文件名。

我需要询问启动服务而不是 xattr 吗?


【问题讨论】:

    标签: macos metadata spotlight file-attributes


    【解决方案1】:

    好的。在四处寻找并阅读更多 Apple 文档后,我意识到我需要做些什么。我正在回答我自己的问题,希望这些信息可能对其他人有所帮助。

    因为我必须编写自己的 mdimporter 来支持我的应用程序的文件格式,我想我会尝试在元数据导入时将 kMDItemDisplay 名称项添加到元数据存储中。

    令我惊讶和高兴的是,它在第​​一次尝试时就奏效了!

    因此,答案是,如果您想要覆盖或添加自定义 kMDItem* 类型,您可以在元数据导入时使用 Spotlight 导入器进行。

    希望有人觉得这有帮助!

    【讨论】:

    • 嗨。我花了几个小时来了解如何在 MacOS ≥10.13 下为自定义文本数据格式(一个包)编写 Spotlight 导入器。我阅读了 Apple 文件(似乎已经过时),很多文件……不。你知道我在哪里可以找到有价值的文档或教程吗?我不使用 CoreData。谢谢
    猜你喜欢
    • 2010-09-17
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2015-03-14
    • 2019-05-11
    • 1970-01-01
    • 2010-10-23
    相关资源
    最近更新 更多