Saya sangat baru mengenal Swift (mulai minggu ini) dan saya memigrasikan aplikasi saya dari Objective-C. Saya pada dasarnya memiliki kode berikut di Objective-C yang berfungsi dengan baik:
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];
}
Saat menerjemahkannya ke Swift, saya melakukan hal berikut:
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)
}
Dengan melakukan itu, saya mendapatkan kesalahan:
'Int' tidak dapat diubah menjadi 'MyTimeFilter'
Saya tidak tahu apakah pendekatan saya (menggunakan properti tag) adalah yang terbaik, tetapi saya perlu melakukan transmisi semacam ini di tempat yang berbeda dalam aplikasi saya. Apakah ada yang punya ide tentang cara menghilangkan kesalahan ini?
Terima kasih!
(sender as UIButton)
, Anda cukup mengubah tanda tangan metode untuk mengambilUIButton
alih-alihAnyObject
.