Swift:实例变量优先于类构造函数?

时间:2015-07-14 01:26:19

标签: swift core-image

我在尝试扩展UIImage时遇到了问题。我正在创建一个新方法,作为某些处理的一部分创建一个CIImage。不幸的是,由于UIImage包含一个名为CIImage的实例变量,编译器似乎认为我的构造函数试图引用该实例变量而不是CIImage类:

extension UIImage {    
  func newMethod() {
    let image = CIImage(CGImage: self.CGImage) // Error: Cannot invoke 'CIImage' with an argument list of type '(CGImage: CGImage!)'
  }
}

是否有解决方法从UIImage扩展的上下文中调用CIImage构造函数?

2 个答案:

答案 0 :(得分:4)

您可以通过使用模块名称前缀来明确引用该类型。

extension UIImage {    
  func newMethod() {
    let image = CoreImage.CIImage(CGImage: self.CGImage)
  }
}

答案 1 :(得分:0)

我可以通过在扩展名外创建一个函数然后在扩展名中调用此方法来解决这个问题:

func CIImageFromCGImage(image: CGImage) -> CIImage {
  return CIImage(CGImage: image)
}

虽然很傻。还有更好的方法吗?