Macos setResourceValue NSURLTagNamesKey错误

Macos setResourceValue NSURLTagNamesKey错误,macos,swift,Macos,Swift,尝试使用setResourceValue将标记颜色设置为蓝色时出错: var error: NSError? let listofTags = NSWorkspace.sharedWorkspace().fileLabels let theURL:NSURL = NSURL.fileURLWithPath("/Volumes/234567_fr.tif")! var Tag: AnyObject = NSWorkspace.sharedWorkspace().fileLabels[4] //

尝试使用setResourceValue将标记颜色设置为蓝色时出错:

var error: NSError?
let listofTags = NSWorkspace.sharedWorkspace().fileLabels
let theURL:NSURL = NSURL.fileURLWithPath("/Volumes/234567_fr.tif")!

var Tag: AnyObject = NSWorkspace.sharedWorkspace().fileLabels[4] // Tag = "Blue"

theURL.setResourceValue(Tag, forKey: NSURLTagNamesKey, error: &error)
println(error) // Error Domain=NSOSStatusErrorDomain Code=-8050 "The operation couldn’t be completed. (OSStatus error -8050.)

有什么想法吗?感谢您的帮助

解决方案:

var error: NSError?
let theURL:NSURL = NSURL(fileURLWithPath: "/Users/me/tests/z.png")!
let tag: AnyObject = NSWorkspace.sharedWorkspace().fileLabels[4] // "Blue" tag
let arr = NSArray(object: tag)
theURL.setResourceValue(arr, forKey: NSURLTagNamesKey, error: &error)
var error: NSError?
let theURL:NSURL = NSURL(fileURLWithPath: "/Users/me/tests/z.png")!
let arr = NSArray(object: "Bleu") // "Blue" translated to French
theURL.setResourceValue(arr, forKey: NSURLTagNamesKey, error: &error)
1-setResourceValue的第一个参数必须是NSArray

2-令人震惊,但是。。。颜色名称必须是本地化名称

此示例修复了8050错误,但如果系统语言不是英语,则不会实际设置颜色标记:

var error: NSError?
let theURL:NSURL = NSURL(fileURLWithPath: "/Users/me/tests/z.png")!
let tag: AnyObject = NSWorkspace.sharedWorkspace().fileLabels[4] // "Blue" tag
let arr = NSArray(object: tag)
theURL.setResourceValue(arr, forKey: NSURLTagNamesKey, error: &error)
var error: NSError?
let theURL:NSURL = NSURL(fileURLWithPath: "/Users/me/tests/z.png")!
let arr = NSArray(object: "Bleu") // "Blue" translated to French
theURL.setResourceValue(arr, forKey: NSURLTagNamesKey, error: &error)
在我的系统(法语)上,这并没有设置实际的蓝色标签标签,只有一个包含单词“blue”的文本标签

要设置正确的颜色标签,您必须按字面意思给出本地化的颜色名称:

var error: NSError?
let theURL:NSURL = NSURL(fileURLWithPath: "/Users/me/tests/z.png")!
let tag: AnyObject = NSWorkspace.sharedWorkspace().fileLabels[4] // "Blue" tag
let arr = NSArray(object: tag)
theURL.setResourceValue(arr, forKey: NSURLTagNamesKey, error: &error)
var error: NSError?
let theURL:NSURL = NSURL(fileURLWithPath: "/Users/me/tests/z.png")!
let arr = NSArray(object: "Bleu") // "Blue" translated to French
theURL.setResourceValue(arr, forKey: NSURLTagNamesKey, error: &error)

更新:Swift 3的新答案是,它在不知道颜色名称的情况下工作。