मैं स्विफ्ट के लिए बहुत नया हूं (इस सप्ताह शुरू हुआ) और मैं अपने ऐप को ऑब्जेक्टिव-सी से माइग्रेट कर रहा हूं। मेरे पास मूल रूप से ऑब्जेक्टिव-सी में निम्न कोड है जो ठीक काम करता है:
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];
}
स्विफ्ट में इसका अनुवाद करते समय, मैंने निम्नलिखित कार्य किया:
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
।