Tôi rất mới với Swift (đã bắt đầu trong tuần này) và tôi đang di chuyển ứng dụng của mình từ Objective-C. Về cơ bản, tôi có đoạn mã sau trong Objective-C hoạt động tốt:
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];
}
Khi dịch nó sang Swift, tôi đã làm như sau:
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)
}
Bằng cách đó, tôi nhận được lỗi:
'Int' không thể chuyển đổi thành 'MyTimeFilter'
Tôi không biết cách tiếp cận của mình (sử dụng thuộc tính thẻ) là tốt nhất, nhưng dù sao tôi cũng cần thực hiện kiểu đúc này ở những nơi khác nhau trong ứng dụng của mình. Có ai có ý tưởng làm thế nào để thoát khỏi lỗi này?
Cảm ơn!
(sender as UIButton)
, bạn chỉ có thể thay đổi chữ ký phương thức đểUIButton
thay thếAnyObject
.