Sono molto nuovo su Swift (iniziato questa settimana) e sto migrando la mia app da Objective-C. Ho sostanzialmente il seguente codice in Objective-C che funziona bene:
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];
}
Durante la traduzione in Swift, ho fatto quanto segue:
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)
}
In questo modo, ottengo l'errore:
'Int' non è convertibile in 'MyTimeFilter'
Non so se il mio approccio (usando la proprietà tag) sia il migliore, ma comunque devo fare questo tipo di casting in diversi punti della mia app. Qualcuno ha un'idea di come sbarazzarsi di questo errore?
Grazie!
(sender as UIButton)
, è possibile modificare la firma del metodo solo per prendere inUIButton
invece diAnyObject
.