2015-02-18 8 views
5

ho questa enum a SwiftCome utilizzare enumerazioni come parametri a Swift Protocolli funzioni opzionali

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

E questo protocollo

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

sto ottenendo questo errore Method cannot be marked @objc because the type of the parameter cannot be represented in Objective-C

Can nessuno dimmi perché ottengo questo errore e come risolverlo per favore? Grazie!

risposta

7

L'attributo @objc rende il protocollo compatibile (cioè utilizzabile) con l'obiettivo C. Ma le enumerazioni rapide (precedenti alla 1.2 beta) non sono disponibili nell'obiettivo C. Pertanto non è possibile utilizzare una enumerazione rapida in tale protocollo.

Penso che la soluzione migliore sia l'uso di swift 1.2 - è ancora in beta (ad oggi), ma è possibile applicare l'attributo @objc a enumerazioni rapide.

+0

Grazie per la risposta. Ho inserito l'attributo @obj perché ho ricevuto un errore senza di esso. –

+0

'opzionale' può essere applicato solo ai membri di un protocollo @objc –

+1

Quindi suggerisco di usare swift 1.2 - è ancora in beta, ma puoi applicare '@ objc' a enum ... che risolverebbe il tuo problema – Antonio