Je suis très nouveau sur Swift (j'ai commencé cette semaine) et je migre mon application d'Objective-C. J'ai essentiellement le code suivant en Objective-C qui fonctionne bien:
typedef enum : int {
MyTimeFilter1Hour = 1,
MyTimeFilter1Day = 2,
MyTimeFilter7Day = 3,
MyTimeFilter1Month = 4,
} MyTimeFilter;
...
- (void)selectFilter:(id)sender
{
self.timeFilterSelected = (MyTimeFilter)((UIButton *)sender).tag;
[self closeAnimated:YES];
}
Lors de la traduction en Swift, j'ai fait ce qui suit:
enum MyTimeFilter : Int {
case OneHour = 1
case OneDay = 2
case SevenDays = 3
case OneMonth = 4
}
...
@IBAction func selectFilter(sender: AnyObject) {
self.timeFilterSelected = (sender as UIButton).tag as MyTimeFilter
self.close(true)
}
En faisant cela, j'obtiens l'erreur:
'Int' n'est pas convertible en 'MyTimeFilter'
Je ne sais pas si mon approche (en utilisant la propriété tag) est la meilleure, mais de toute façon je dois faire ce genre de casting à différents endroits de mon application. Quelqu'un a-t-il une idée de la façon de se débarrasser de cette erreur?
Merci!
(sender as UIButton)
, vous pouvez simplement changer la signature de la méthode pour prendre unUIButton
au lieu deAnyObject
.