2015-02-18 13 views
5

Ich habe dieses Enum in SwiftWie Aufzählungen als Parameter in Swift Protokolle optionale Funktionen verwenden

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

Und dieses Protokoll

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

ich diesen Fehler Method cannot be marked @objc because the type of the parameter cannot be represented in Objective-C

Kann jemand Sag mir, warum bekomme ich diesen Fehler und wie kann ich ihn reparieren? Danke!

Antwort

7

Das @objc-Attribut macht das Protokoll mit Objective C kompatibel (d. H. Verwendbar). Aber schnelle Enums (vor 1.2 Beta) sind in Objective C nicht verfügbar. Sie können also keine schnelle Enumeration in diesem Protokoll verwenden.

Ich denke, dass die beste Lösung ist, Swift 1.2 zu verwenden - es ist immer noch in der Beta (ab heute), aber es ist möglich, das Attribut @objc auf Swift enums anzuwenden.

+0

Danke für die Antwort. Ich habe das @obj -Attribut gesetzt, weil ich einen Fehler ohne es erhalten habe. –

+0

'optional' kann nur auf Mitglieder eines @objc-Protokolls angewendet werden –

+1

Dann schlage ich vor, swift 1.2 zu verwenden - es ist noch in der Beta, aber Sie können '@ objc' auf enums anwenden ... das würde Ihr Problem lösen – Antonio