In Swift, per verificare la conformità del protocollo con is
o as?
downcasting, è necessario contrassegnare il protocollo con l'attributo @objc
. Una volta che si contrassegna un protocollo con quell'attributo, sembra che non si possa avere un protocollo con un enum come una proprietà perché le enumerazioni non possono essere rappresentate in Objective-C.Verificare la conformità del protocollo quando il protocollo contiene un enum in Swift?
enum Language:String {
case English = "English"
case Spanish = "Spanish"
case German = "German"
}
@objc protocol Humanizable {
var language:Language { get set }
}
Si otterrà un errore: error: property cannot be marked @objc because its type cannot be represented in Objective-C
Qui è pieno esempio: http://swiftstub.com/475659213/
Nell'esempio se si modifica il Language
-String
poi funziona benissimo.
Grazie per il collegamento swiftstub.com, molto utile! Un problema interessante anche. – ColGraff
@Graff No prob. Almeno puoi provarlo e vedere il problema che sto affrontando. – Johnston
Sì, lo vedo. Ho ingannato un po 'ma non ho ancora inventato nulla. Speriamo che ci sia una buona risposta là fuori, il massimo che ho potuto inventare era usare un Int o String al posto dell'enum. – ColGraff