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")
}
}
}
}