Edited at

[Swift] Finderなどで使用されるタグ/ラベルにアクセスする

Finderなどで使用されるタグにアクセスするのSwift版です。

SwiftではNSURLではなくURLの利用が推奨されているようですが、現在のところタグをセットするにはNSURLを使うしかありません。(Appleに変更する意思があるかどうかは不明です)

いちいちNSURLにキャストするのは面倒くさいのでURLを拡張します。

extension URL {

public var tagNames: [String]? {

get {
let values = try resourceValues(forKeys: [.tagNamesKey])

return values?.tagNames
}

set {

do {

let url = self as NSURL
try url.setResourceValue(tagNames, forKey: .tagNamesKey)

} catch {

print("Can not set tagNames.")
}
}
}
}

見ての通りですが取得に関してはNSURLだけでなくURLでも可能です。

文字列 "red"、 "orange" などを設定するとFinder上ではレッド、オレンジのタグ(ラベル)が付きます。


ラベルの設定

extension URL {

public var labelNumber: Int? {

get {

let values = try? self.resourceValues(forKeys: [.labelNumberKey])

return values?.labelNumber
}

set {

do {

let url = self as NSURL
try url.setResourceValue(newValue, forKey: .labelNumberKey)

} catch {

print("Can not set labelNumber")
}
}
}
}