Я дуже новачок у Swift (розпочав роботу цього тижня), і я переношу свій додаток з Objective-C. Я в основному наступний код в Objective-C, який працює чудово:
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];
}
Перекладаючи його на Swift, я зробив наступне:
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)
}
Роблячи це, я отримую помилку:
"Int" не можна конвертувати в "MyTimeFilter"
Я не знаю, чи найкращий мій підхід (за допомогою властивості тегів), але все одно мені потрібно робити цей вид кастингу в різних місцях у моєму додатку. Хтось має уявлення про те, як позбутися цієї помилки?
Дякую!
(sender as UIButton)
ви можете просто змінити підпис методу, щоб прийнятиUIButton
замістьAnyObject
.