如何使用Swift在MacOS中以编程方式添加Finder标记而不标记文件?

时间:2019-01-07 16:18:51

标签: swift macos metadata xattr

我正在构建一个macOS应用,该应用使用类似于Swift 3: Set Finder label color的答案的扩展属性,以编程方式为文件设置Finder标签。这很好用。

但是,我想创建一个标签并使它在文件系统中可用,而不必将标签添加到特定文件中。例如,当用户单击按钮时,我要创建一个标签,类似于 Finder-首选项-标签,您可以在其中按+按钮创建新标签。您不必指定文件或文件夹。

我尝试使用setResourceValue API将新标签添加到虚拟文件夹的 _kMDItemUserTags 中。这将按预期创建标签。但是,现在在搜索此标签时显示了虚拟文件夹,这不是很好。一旦我再次从虚拟文件夹中删除该标签(其他文件或文件夹都没有该标签),该标签就会从可用标签列表中消失。

所以,我想知道如何在Swift中创建一个新标签并将其持久化而不将其分配给文件吗?

1 个答案:

答案 0 :(得分:0)

最近当我要求将标记支持添加到我的“SDview”图像查看器/组织器时,我对该主题进行了一些研究,但这些标记似乎没有任何存储空间,您可以在其中添加/保留它们“供以后使用”。可用标签列表是一个动态构造,由 Spotlight 元数据聚合已使用的标签构建而成。 IOW 如果您希望您的标签显示在可用标签列表中 - 您必须将其分配给某些东西。