2015-02-18 10 views
5

मैं स्विफ्टस्विफ्ट प्रोटोकॉल वैकल्पिक कार्यों में पैरामीटर के रूप में Enums का उपयोग कैसे करें

enum Direction: Int{ 
    case Left2Right = 0, Right2Left 
} 

में इस enum और इस प्रोटोकॉल है

@objc protocol CellDelegate : NSObjectProtocol{ 
    optional func has(direction:SwipeDirection) -> Bool 
} 

मैं यह त्रुटि Method cannot be marked @objc because the type of the parameter cannot be represented in Objective-C

किसी को भी कर सकते हैं हो रही है मुझे बताओ मुझे यह त्रुटि क्यों मिलती है और इसे कैसे ठीक किया जाए? धन्यवाद!

उत्तर

7

@objc विशेषता प्रोटोकॉल संगत (यानी उपयोग योग्य) को उद्देश्य सी के साथ बनाती है लेकिन स्विफ्ट एनम्स (1.2 बीटा से पहले) उद्देश्य सी में उपलब्ध नहीं हैं। इसलिए आप उस प्रोटोकॉल में एक स्विफ्ट एनम का उपयोग नहीं कर सकते हैं।

मुझे लगता है कि सबसे अच्छा समाधान स्विफ्ट 1.2 का उपयोग करना है - यह अभी भी बीटा (आज के रूप में) में है, लेकिन @objc स्विफ्ट एनम्स में विशेषता लागू करना संभव है।

+0

उत्तर के लिए धन्यवाद। मैंने @obj विशेषता डाली क्योंकि मुझे इसके बिना कोई त्रुटि मिली। –

+0

'वैकल्पिक' केवल @objc प्रोटोकॉल –

+1

के सदस्यों पर लागू किया जा सकता है, तो मैं स्विफ्ट 1.2 का उपयोग करने का सुझाव देता हूं - यह अभी भी बीटा में है, लेकिन आप enoms पर '@ objc' लागू कर सकते हैं ... जो आपकी समस्या को हल करेगा – Antonio

संबंधित मुद्दे