2016-09-04 12 views
7

में नहीं मिला है, मैं यहां कई प्रश्नों की खोज कर रहा हूं, मुझे एक ही शीर्षक Enum case switch not found in type के साथ मिला, लेकिन मेरे लिए कोई समाधान नहीं मिला।स्विफ्ट: एनम केस

मैं प्रश्नों को हल करने के लिए स्वयं के उत्परिवर्तन के साथ enum का उपयोग करना चाहता हूं, व्यक्तिगत राज्यों में अगला ट्रैफिक लाइट रंग क्या है।

enum TrafficLights { 
    mutating func next() { 
     switch self { 
     case .red: 
      self = .green 
     case .orange: 
      self = .red 
     case .green: 
      self = .orange 
     case .none: 
      self = .orange 
     } 
    } 
} 

मैं संभव विकल्प के रूप में सभी मामलों डाल दिया है और यह अभी भी त्रुटि लौटा रहा है:

Enum 'case' not found in type 'TrafficLights'

+0

मैं उलझन में था, मैंने सोचा कि अगर सभी मामलों परिवर्तनशील समारोह के अंदर हैं, वे बाहर है कि समारोह से परिभाषित करने की होने की जरूरत नहीं है। धन्यवाद। – GiorgioE

+3

मुझे आशा है कि यह वास्तविक यातायात रोशनी के लिए उपयोग नहीं किया गया है ... – Alnitak

उत्तर

4

मामलों समारोह के बाहर घोषित किया जाना चाहिए:

enum TrafficLights { 

case green 
case red 
case orange 
case none 

mutating func next() { 
    switch self { 
    case .red: 
     self = .green 
    case .orange: 
     self = .red 
    case .green: 
     self = .orange 
    case .none: 
     self = .orange 
    } 
    } 
} 

सलाह योग्य: - के माध्यम से जाओ Enumeration - Apple Documentation

+0

धन्यवाद! मेरी मूल गलती अब यह काम करता है, इसलिए अब अगर मैं मामला हटा देता हूं। म्यूटेटिंग फ़ंक्शन से कोई नहीं, तब भी यह मामला परिभाषित होगा, भले ही मुझे उस स्थिति के बाद अगला कदम न हो। यही वह है जिसे मैं ढूंढ रहा था। – GiorgioE

+0

प्रलेखन: - https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html ..:) हैप्पी कोडिंग – Dravidian

+4

इन मामलों को एक पंक्ति में जोड़ना भी संभव है, इसलिए ' मामला हरा, लाल, नारंगी, कोई नहीं '। – pedrouan

11

मुझे एक ही त्रुटि के साथ कोई समस्या हो रही थी जब एक इन को परिवर्तित करना एक कस्टम enum करने के लिए टी:

switch MyEnum(rawValue: 42) { 
case .error: 
    // Enum case `.error` not found in type 'MyEnum?' 
    break 
default: 
    break 
} 

मुद्दा यह है कि MyEnum(rawValue: 42) रिटर्न एक वैकल्पिक है। यह खोलने या enum चालू करने की अनुमति के लिए एक गैर वैकल्पिक प्रदान करते हैं:

switch MyEnum(rawValue: 42) ?? MyEnum.yourEnumDefaultCase { 
case .error: 
    // no error! 
    break 
default: 
    break 
} 
+2

मैं उपयोगकर्ता को '?? ':' (MyEnum (rawValue: 42) ?? MyEnum.error) के साथ डिफ़ॉल्ट मान जैसे अनचाहे होने का एक और तरीका सुझाता हूं। – dulgan