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

标签 macos metadata spotlight file-attributes

我看到 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 搜索结果菜单中列出文件,这是我想在我的应用程序中实现的功能。

谢谢!


Heyyyy...等一下...

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

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


最佳答案

好的。经过更多的搜索和阅读更多的苹果文档后,我意识到我需要做什么。我正在回答我自己的问题,希望这些信息对其他人有帮助。

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

令我惊讶和高兴的是,第一次尝试就成功了!

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

希望有人觉得这有帮助!

关于macos - 将 Spotlight 元数据写入 OS X 上的文件(特别是 kMDItemDisplayName),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13597668/

相关文章:

运行 solR 时在 OSX 10.9.1 中找不到 Java 运行时

iphone - 是否可以在 iPhone SDK 中使用 HTTP 实时流读取元数据

FFMPEG CLI 语言元数据标记输出 MP4(视频 + 音频)文件

objective-c - Core Data 应用程序不生成 Spotlight 可索引元数据(或者我找不到它)

macos - 安装 zeromq MacOSX 时出现问题

MySQL 5.7.21 安装 Mac 但有偏好错误

objective-c - 如何将.nib加载到 View 中?

java - 使用 Apache Jackrabbit 提取元数据

cocoa - Spotlight 插件读取 NSDocument 导致控制台中出现 "deny file-write-data"错误