Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 为什么赢了';我的NSColor分机没有看到CGColor吗?_Swift_Extension Methods_Swift Extensions_Nscolor_Cgcolor - Fatal编程技术网

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解释。然而,我认为埃里卡娅的解决方案更好。