/ / शब्दकोश के शब्दकोश से स्विफ्ट निकालें वैकल्पिक - json, xcode, स्विफ्ट, एपीआई

स्विफ्ट को शब्दकोश के शब्दकोश से वैकल्पिक हटाएं - जेसन, एक्सकोड, स्विफ्ट, एपीआई

मैं JSON के रूप में एक एपीआई से डेटा ले रहा हूं। मुझे डायनामिक टाइप का एक वेरिएबल मिलता है Swift.Dictionary<NSObject, Swift.AnyObject> और इस चर को बुलाओ myDictionary। जब मैं मांगता हूं print(myDictionary["keyA"]) यह "कीआ" से जुड़ा मान (आंतरिक शब्दकोष) लौटाता है, लेकिन यह इसे एक के रूप में लौटाता है Swift.Optional<Swift.AnyObject>.

मैं आंतरिक शब्दकोश के साथ एक चर कैसे निर्धारित करूं जो "वैकल्पिक नहीं है? या मैं आंतरिक शब्दकोश मूल्यों तक कैसे पहुंच सकता हूं?"

उत्तर:

जवाब के लिए 2 № 1

सभी शब्दकोश पहुंच के रूप में वापस आ रहे हैं optionals क्योंकि कुंजी का उपयोग शब्दकोश में मौजूद नहीं हो सकता है, और इस प्रकार nil उस मामले में वापस आ गया है आप वैकल्पिक कास्टिंग का उपयोग कर सकते हैं as? वैकल्पिक बंधन के साथ if let यह सुनिश्चित करने के लिए कि मूल्य मौजूद है, कि यह एक शब्दकोश है जैसा कि अपेक्षित है, और इसे खोल दें:

if let innerDictionary = myDictionary["keyA"] as? [NSObject: AnyObject] {
// if we get here, "keyA" is a valid key in myDictionary and
// we got the type right.  innerDictionary is now unwrapped and ready
// to use.
}

मैंनें इस्तेमाल किया [NSObject: AnyObject] इनरवियर प्रकार के रूप में। यदि आप इसके बारे में अधिक जानते हैं, तो आप उदाहरण के लिए अधिक विशिष्ट कलाकारों का उपयोग कर सकते हैं as? [String: String] यदि आप जानते हैं कि कुंजी और मान दोनों प्रकार के हैं String। यदि आप गलत हैं, तो वैकल्पिक कास्ट वापस आ जाएगा nil और ब्लॉक में प्रवेश नहीं किया जाएगा क्योंकि वैकल्पिक बाध्यकारी सफल नहीं होगा।