2014-11-23 11 views
9

Cercando di avviare alcuni lavori Swift. Sto usandoSwift lamenta "etichetta argomento estraneo"

var imageData = UIImageJPEGRepresentation(image, compressionQuality:1.0) 

ma ottengo un avvertimento "label argomento estraneo 'compressionQuality' a chiamata. Ho pensato che a Swift i parametri secondari erano sia richiesto o 'permesso' di essere etichettati, ma questo non permetterò me lo uso a tutti, non riesco a costruire se lo lascio. Poiché si tratta di una funzione di sistema, non posso usare il # per richiederlo, ma mi piacerebbe poter nominare quanti più parametri possibile per rendere il codice più leggibile per me stesso, mi piacciono i nomi dei metodi objc, come verbose come a volte sono.

c'è un modo per impostare un flag di compilazione per consentire etichette argomento extra?

risposta

7

Non si può fare così, perché quella funzione non dichiara alcun nome di parametro esterno. I nomi dei parametri interni possono essere utilizzati solo all'interno della funzione che li dichiara.

In Swift UIImageJPEGRepresentation metodo è dichiarato come:

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

controllare entrambi i parametri, entrambi hanno nome interno solo quindi non è possibile utilizzare:

var imageData = UIImageJPEGRepresentation(image, compressionQuality:1.0) 

Change che a:

var imageData = UIImageJPEGRepresentation(image,1.0) 
+0

OK Non ero a conoscenza dei nomi dei parametri interni. Il completamento automatico lo ha mostrato inizialmente a me. –

+0

Ricevo quell'errore, ma solo per il primo di due parametri: il secondo non causa errori. Cioè, ho 'func fittizio (a: Int, B: Int)' e se io lo chiamo come 'fittizio (a: 1, B: 2)', ottengo l'errore su 'una:' (a meno che non anteporre a '#', ovviamente). Ma se lo chiamo così: 'dummy (1, b: 2);', l'euro va via. Qualche idea? –

+1

@NicolasMiari: Tranne i metodi init tutte le altre funzioni, la prima etichetta di parametro non è obbligatoria, altrimenti la contrassegnate come obbligatoria. Quindi nel tuo caso la prima etichetta parametro "a" non è richiesta quando si chiama quella funzione. –

0

Ho avuto un problema simile, ma Xcode si lamentava di ciò in uno dei miei divertimenti cions.

Si è rivelato un extra } nel mio codice, rendendo le successive dichiarazioni di funzione esterne alla mia classe.

Il messaggio di errore era strano come l'inferno, quindi spero che faccia parte di qualcun altro.

Problemi correlati