2014-11-23 137 views
9

试图启动一些Swift工作。我使用Swift抱怨“无关的参数标签”

var imageData = UIImageJPEGRepresentation(image, compressionQuality:1.0) 

但我得到的电话警告“外部参数标签‘compressionQuality设置’。我认为在斯威夫特二次参数要求或‘允许’来标记,但是这不会让我使用它 - 如果我离开它,失败的建筑物,因为这是一个系统函数,所以我不能使用#来要求它,但是我希望能够命名尽可能多的参数以使代码更具可读性我自己,我喜欢ObjC方法名,因为冗长,因为他们有时是。

有没有设定一个编译器标志允许额外的参数标签的方法吗?

回答

7

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

在斯威夫特UIImageJPEGRepresentation方法声明为:

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

检查这两个参数,都具有内部名称只有这样你就不能使用:

var imageData = UIImageJPEGRepresentation(image, compressionQuality:1.0) 

修改成:

var imageData = UIImageJPEGRepresentation(image,1.0) 
+0

好吧我不知道只有内部参数名称。自动完成功能最初显示给我。 – 2014-11-24 16:51:37

+0

我得到了这个错误,但仅仅是两个参数中的第一个:第二个不会导致错误。也就是说,我有'func dummy(a:Int,b:Int)',如果我把它叫做'dummy(a:1,b:2)',我得到'a:'的错误(除非我预先当然是'#')。但如果我这样称呼:“虚拟(1,b:2)”,欧元就会消失。任何想法? – 2015-05-29 07:24:04

+1

@NicolasMiari:除init方法外,所有其他函数的第一个参数标签不是必需的,否则将其标记为强制。所以在你的情况下,调用该函数时不需要第一个参数标签“a”。 – 2015-05-29 08:26:43

0

我有一个类似的问题,但Xcode在我的乐趣之一抱怨接穗。

在我的代码中原来是一个额外的},使得随后的函数声明在我的类之外。

错误信息很奇怪,所以我希望它能帮助别人。