2014-11-23 57 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在我的樂趣之一抱怨接穗。

在我的代碼中原來是一個額外的},使得隨後的函數聲明在我的類之外。

錯誤信息很奇怪,所以我希望它能幫助別人。