2015-02-18 8 views
5

mam ten enum w SwiftJak używać teksty stałe jako parametry w protokołach Swift opcjonalnych funkcji

enum Direction: Int{ 
    case Left2Right = 0, Right2Left 
} 

i ten protokół

@objc protocol CellDelegate : NSObjectProtocol{ 
    optional func has(direction:SwipeDirection) -> Bool 
} 

ja dostaję ten błąd Method cannot be marked @objc because the type of the parameter cannot be represented in Objective-C

może ktoś powiedz mi, dlaczego dostaję ten błąd i jak go naprawić? Dzięki!

Odpowiedz

7

Atrybut @objc sprawia, że ​​protokół jest kompatybilny (tj. Użyteczny) z Celem C. Ale szybkie wyliczenia (przed wersją 1.2 beta) nie są dostępne w Celu C. Nie można zatem używać szybkiego wyliczania w tym protokole.

Myślę, że najlepszym rozwiązaniem jest użycie Swift 1.2 - nadal jest w fazie beta (od dzisiaj), ale możliwe jest zastosowanie atrybutu @objc do szybkich wyliczeń.

+0

Dzięki za odpowiedź. Umieściłem atrybut @obj, ponieważ otrzymałem błąd bez niego. –

+0

"Opcjonalny" może być stosowany tylko dla członków protokołu @objc –

+1

Następnie sugeruję użycie Swift 1.2 - nadal jest w wersji beta, ale możesz zastosować '@ objc' do wyliczenia ... które rozwiąże twój problem – Antonio

Powiązane problemy