मैं इस कोड है। आम तौर पर, मैं इसे इस तरह से तय:
let s: String? = Enum(rawValue: "A")?.rawValue
हालांकि, Xcode कि मैं .map { $0.rawValue }
जोड़ना चाहिए कहते हैं:
यह अजीब है क्योंकि स्पष्ट रूप से, Xcode पता है कि तक पहुँचने rawValue
में Enum
बदल सकते है एक String
। लेकिन यह map
का उपयोग करके ऐसा करने का सुझाव क्यों देता है? क्यों न सिर्फ इसे सीधे एक्सेस करें?
मैंने सोचा था कि Xcode इस तरह से लगता होगा:
मैं एक स्ट्रिंग को छोड़ दिया और एक enum जिसका कच्चे मूल्य स्ट्रिंग है पर लगातार मिल गया है। प्रकार संगत नहीं हैं, लेकिन मुझे पता है कि
rawValue
एनम को स्ट्रिंग में बदल सकता है। मैं बस उपयोगकर्ता को?.rawValue
जोड़ने का सुझाव दूंगा!
इसके पीछे एक्सकोड की "सोच प्रक्रिया" क्या है?
पीएस मेरा इरादा यह जांचना है कि "A"
एक enum के लिए एक वैध कच्चे मूल्य है या नहीं। यदि ऐसा है, तो इसे s
पर असाइन करें, अन्यथा nil
असाइन करें। मुझे पता है कि यह बहुत व्यावहारिक नहीं है, लेकिन मैं सिर्फ एक्सकोड के व्यवहार से चिंतित हूं।
बस खेल का मैदान पर यह कोशिश की, अपने प्रारंभिक ठीक वहाँ काम करता है। उत्सुकता कि एक्सकोड 'मानचित्र' का उपयोग करके "सोच" कैसे समस्या को ठीक करेगा। – antonio081014
असल में, मुझे आश्चर्य है कि एक्सकोड पहले से ही इसे ठीक करने के लिए पर्याप्त स्मार्ट है। – Hamish
कृपया उस प्रतिकूल सामग्री के साथ एक्सकोड को परेशान न करें जो आपको - डेवलपर - संकलन समय पर जानना चाहिए। एनम के मामले रनटाइम पर नहीं बदल सकते हैं, इसलिए एक संभावित क्रैश स्पष्ट रूप से डेवलपर त्रुटि को प्रकट करता है। – vadian