【发布时间】: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