मैं 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
और ब्लॉक में प्रवेश नहीं किया जाएगा क्योंकि वैकल्पिक बाध्यकारी सफल नहीं होगा।