Ich bin sehr neu in Swift (habe diese Woche angefangen) und migriere meine App von Objective-C. Ich habe im Grunde den folgenden Code in Objective-C, der gut funktioniert:
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];
}
Bei der Übersetzung in Swift habe ich Folgendes getan:
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)
}
Auf diese Weise erhalte ich den Fehler:
'Int' kann nicht in 'MyTimeFilter' konvertiert werden
Ich weiß nicht, ob mein Ansatz (unter Verwendung der Tag-Eigenschaft) der beste ist, aber ich muss diese Art von Casting an verschiedenen Stellen in meiner App durchführen. Hat jemand eine Idee, wie man diesen Fehler beseitigt?
Vielen Dank!
(sender as UIButton)
Sie auch, dass Sie stattdessen einfach die Methodensignatur ändern können, um einUIButton
statt zu übernehmenAnyObject
.