setResourceValue NSURLTagNamesKey 错误

2024-01-03

尝试使用 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.)

任何想法?感谢您的帮助


解决方案:

1 - 第一个参数setResourceValue必须是 NSArray

2 - 令人震惊,但是......颜色名称必须是本地化的 one!

此示例修复了错误 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

setResourceValue NSURLTagNamesKey 错误 的相关文章

随机推荐