Swift 为什么赢了';我的NSColor分机没有看到CGColor吗?
这让我困惑。。。我正在尝试为Swift 为什么赢了';我的NSColor分机没有看到CGColor吗?,swift,extension-methods,swift-extensions,nscolor,cgcolor,Swift,Extension Methods,Swift Extensions,Nscolor,Cgcolor,这让我困惑。。。我正在尝试为NSColor创建一个方便的初始值设定项,它将CGColor转换为一个,但出于某些危险的原因,它只是拒绝承认CGColor存在!我已经导入了Cocoa,为了保持理智,我还导入了CoreGraphics,甚至导入了CoreGraphics.CGColor,但还是没有运气 谁能告诉我我做错了什么?清理和重建没有任何帮助…Xcode在这里显然表现不好。解决方法:在签名中使用完整的类型 convenience init(_ cgColor: CoreGraphics.CGC
NSColor
创建一个方便的初始值设定项,它将CGColor
转换为一个,但出于某些危险的原因,它只是拒绝承认CGColor
存在!我已经导入了Cocoa
,为了保持理智,我还导入了CoreGraphics
,甚至导入了CoreGraphics.CGColor
,但还是没有运气
谁能告诉我我做错了什么?清理和重建没有任何帮助…Xcode在这里显然表现不好。解决方法:在签名中使用完整的类型
convenience init(_ cgColor: CoreGraphics.CGColor)
正如评论中所说的那样,
NSColor
有一个init(cgColor:)
初始值设定项,它可能
使你的问题过时
但既然您在问为什么它不编译:
原因是NSColor
具有CGColor
属性,并且该属性与CGColor
类型冲突。
作为解决方法,可以使用CGColorRef
别名:
extension NSColor {
convenience init(_ cgColor: CGColorRef) {
// ...
}
}
正如Eric Aya所说,Xcode 8 beta 4不存在这个问题。原因是
NSColor
属性被重命名为cgColor
,并且不再与cgColor
类型冲突,为什么NSColor
已经有一个@Hamish aw,dang。。。由于某种原因,它没有出现在我的自动完成中/我还注意到OP的代码在Xcode 8 b4中工作。苹果似乎已经解决了这个编译器问题。真漂亮!谢谢你的知识@艾丽卡娅:是的,在Swift 3中,该属性被重命名为cgColor
。感谢您的快速回答!我认为这个解决方案比@MartinR的要好,因为它不依赖于typealias的可用性,因此更安全general@AlexanderMomchliov当前位置我并不反对,但我回答的要点是解释问题发生的原因。这不是一个“行为不端的编译器”,而是框架中相互冲突的定义。@MartinR澄清一下,我更喜欢你的答案,因为你给出了backgound解释。然而,我认为埃里卡娅的解决方案更好。