从swift设置finder标签?

时间:2017-11-24 00:32:31

标签: swift macos

我可以使用以下代码在swift中获取finder标签:

if let tagArray = try url.resourceValues(forKeys:[.tagNamesKey]).tagNames {
    ...
}

但是设置它会导致错误:

var values = URLResourceValues()
values.tagNames = finderTags

给出错误:

Compile Swift Module 'tagsync' (1 sources)
main.swift:104:20: error: cannot assign to property: 'tagNames' is a get-only property
                    values.tagNames = finderTags
                    ~~~~~~~~~~~~~~~ ^

如何从swift写一个标签?

2 个答案:

答案 0 :(得分:1)

我知道这样做的唯一方法是编写com.apple.metadata:_kMDItemUserTags扩展属性,您可以使用setxattr API执行此操作。

答案 1 :(得分:0)

您可以使用NSURL(而非URL)轻松编写Finder标签:

let myPath = "any POSIX path; spaces ok"  
var myFinderTags = ["a", "b", "c"]  
try NSURL(fileURLWithPath: myPath).setResourceValues([.tagNamesKey: myFinderTags])