斯威夫特抱怨"无关的争论标签"

时间:2014-11-23 04:04:45

标签: ios xcode swift

尝试开始一些Swift工作。我正在使用

var imageData = UIImageJPEGRepresentation(image, compressionQuality:1.0)

但是我收到警告"无关的参数标签' compressionQuality'在电话中。我认为在Swift中,二级参数要么是必需的,要么是允许的。要贴上标签,但是如果我离开的话,这不会让我一直使用它。由于这是一个系统功能,我不能使用#来要求它。但是我希望能够为尽可能多的参数命名以使代码对我自己更具可读性,我喜欢ObjC方法名称,就像它们有时一样冗长。

有没有办法设置编译器标志以允许额外的参数标签?

2 个答案:

答案 0 :(得分:9)

你不能这样做,因为该功能没有声明任何外部参数名称。内部参数名称只能在声明它们的函数中使用。

在Swift中UIImageJPEGRepresentation方法被声明为:

func UIImageJPEGRepresentation(_ image: UIImage!,
                             _ compressionQuality: CGFloat) -> NSData! 

检查这两个参数,两者都只有内部名称,因此您无法使用:

var imageData = UIImageJPEGRepresentation(image, compressionQuality:1.0)

将其更改为:

var imageData = UIImageJPEGRepresentation(image,1.0)

更新Swift 4.2:

在swift 4.2中,上述方法不再可用。而不是你需要使用:

// For JPEG
let imageData = image.jpegData(compressionQuality: 1.0)

// For PNG
let imageData = image.pngData()

请参阅API文档了解更多信息:Images & PDF

答案 1 :(得分:0)

我有类似的问题,但Xcode在我的一个功能中抱怨它。

在我的代码中被证明是一个额外的},使后续的函数声明不在我的类中。

错误信息很奇怪,所以我希望它能让其他人知道。