将Spotlight元数据写入OS X上的文件(特别是kMDItemDisplayName)

时间:2012-11-28 04:09:24

标签: macos metadata spotlight file-attributes

我看到Ken T.先前已经回答过这个问题,但是我有一个代码看起来有效的情况,并且对setxattr()的调用返回0,但是我要修改的项目不会改变。 / p>

具体来说,我正在尝试更改元数据属性kMDItemDisplayName,我的调用看起来像这样(以Ken T发布的样本为模型):

[注意:下面的“名称”参数是NSString *]

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

对相关文件执行mdls显示存在kMDItemDisplayName属性,但我无法将其更改为实际文件名以外的任何内容(我假设是默认行为)。

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

非常感谢任何帮助。

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

谢谢!


Heyyyy ......等一下......

从命令行,执行xattr -l显示,就xattr而言,有一个名为kMDItemDisplayName的属性,它是我设置的...但是,同一文件中的mdls仍显示kMDItemDisplayName属性作为文件名。

我是否需要询问Launch Services而不是xattr stuff?


1 个答案:

答案 0 :(得分:3)

行。在更多地搜索并阅读更多Apple文档后,我意识到我需要做什么。我正在回答我自己的问题,希望这些信息对其他人有所帮助。

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

令我惊讶和高兴的是,它第一次尝试就起作用了!

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

希望有人发现这有用!