我正在为MacOS创建我的第一个项目。我必须处理文件夹中的文件。我的目标是检查这些文件,并通过Finder查看哪些元素应用了红色标签。我简直要疯了,因为代码无法识别带有红色标签的图像。
这是我写的函数。
func isFileTaggedRed(at fileURL: URL) -> Bool {
do {
let resourceValues = try fileURL.resourceValues(forKeys: [.labelColorKey])
if let labelColor = resourceValues.labelColor, labelColor == .red {
return true
}
} catch {
print("Error retrieving resource values for file: \(error)")
}
return false
}
这是ViewController中的代码
for imageUrl in imageUrls {
if isFileTaggedRed(at: imageUrl) {
print("Skipping red tagged image: \(imageUrl.lastPathComponent)")
continue
}else{
print("not tagged")
}
}
1条答案
按热度按时间eqoofvh91#
我以前没有用过labelColorKey。看起来你得到的
labelColor
是一个NSColor
。在像MacOS这样的颜色管理系统中,颜色是棘手的。颜色可能是红色,但不是你想要的颜色。我建议使用NSColor.getRed(_:green:blue:alpha:)
记录返回颜色的RGB值。你可能会得到一个接近但不完全等于.red
的颜色。您可能需要添加代码来检查RGB值是否在.red的“摆动空间”范围内(例如每个分量都在目标颜色的.01范围内)。
编辑:
我刚刚尝试了一下,当我向文件添加红色标签时,得到的NSColor记录为
NSCalibratedRGBColorSpace 0.980484 0.382818 0.347662 1
这将看起来是红色的,但不是完全饱和的红色。
请注意,
NSColor.red
记录为sRGB IEC61966-2.1 colorspace 1 0 0 1
(100%红色,没有绿色或蓝色)。此外,当我看一个带有红色标签的文件时,它看起来确实像一个稍微被洗掉的红色,而不是纯红色。
编辑#2:
我使用的代码(在命令行工具中)如下: