ฉันยังใหม่กับ 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
.