2014-11-23 14 views
9

Próbuje rozpocząć jakąś pracę Swift. UżywamSwift narzeka, że ​​"nieistniejąca etykieta argumentu"

var imageData = UIImageJPEGRepresentation(image, compressionQuality:1.0) 

ale pojawia się ostrzeżenie „obcy etykieta argumentem«compressionQuality»w poł. Myślałem, że Swift parametry wtórne były albo wymagane lub«wolno»być znakowane, ale to nie pozwoli ja go w ogóle używam - zawiedzie budowanie, jeśli go opuszczę, ponieważ jest to funkcja systemowa, nie mogę użyć #, aby tego wymagać, ale chciałbym móc wymienić jak najwięcej parametrów, aby kod był bardziej czytelny dla siebie, lubię nazwy metod objc, jak gadatliwy jak czasami są.

Czy istnieje sposób, aby ustawić flagę kompilatora, aby umożliwić dodatkowe etykiety argumentów?

Odpowiedz

7

Nie można tego zrobić, ponieważ ta funkcja nie deklaruje żadnej zewnętrznej nazwy parametru. Wewnętrzne nazwy parametrów mogą być używane tylko w funkcji, która je deklaruje.

w Swift UIImageJPEGRepresentation metoda jest zadeklarowana jako:

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

Sprawdź oba parametry, oba mają tylko nazwę wewnętrzną, więc nie można użyć:

var imageData = UIImageJPEGRepresentation(image, compressionQuality:1.0) 

zmienić na:

var imageData = UIImageJPEGRepresentation(image,1.0) 
+0

OK Nie wiedziałem o nazwach parametrów tylko wewnętrznych. Autouzupełnianie pokazało mi to na początku. –

+0

Otrzymuję ten błąd, ale tylko dla pierwszego z dwóch parametrów: drugi nie powoduje błędu. Oznacza to, że mam 'func dummy (a: Int, b: Int)' i jeśli nazywam to 'manekinem (a: 1, b: 2)', otrzymuję komunikat o błędzie 'a:' (chyba, że ​​dodaję "#", oczywiście). Ale jeśli nazywam to tak: 'manekin (1, b: 2);', euro zniknie. Dowolny pomysł? –

+1

@NicolasMiari: Oprócz metod inicjowania wszystkich innych funkcji pierwsza etykieta parametru nie jest obowiązkowa, w przeciwnym razie zostanie oznaczona jako obowiązkowa. Tak więc w twoim przypadku pierwsza etykieta parametru "a" nie jest wymagana podczas wywoływania tej funkcji. –

0

Miałem podobny problem, ale Xcode narzekał na to w jednej z moich zabaw cions.

Okazało się być dodatkowym } w moim kodzie, czyniąc kolejne deklaracje funkcji poza moją klasą.

Komunikat o błędzie był dziwny jak diabli, więc mam nadzieję, że to rozwiąże kogoś innego.

Powiązane problemy