मैं जानकारी प्राप्त करने के लिए एक वेब सेवा का उपयोग कर रहा हूँ। जब कहा गया जानकारी लौटा दी जाती है, तो मैं जेसन से प्राप्त डेटा को एक ताना में परिवर्तित करता हूं।

जब डंपिंग डिक्टेट ऑब्जेक्ट, कुछ आइटम इस तरह आते हैं:

▿ (2 elements)

- key: "street1"

- value: <null> #4

मैं इस डेटा को पढ़ने और यह जानने के बारे में कैसे जाउंगा कि मान न्यूल है

मैंने निम्नलिखित कोशिश की है:

let street1:String = dict?["street1"] as! String

यह इसके साथ विफल रहता है: 'NSNull' (0x10fbf7918) से 'NSString' (0x10f202c60) प्रकार का मान नहीं डाला जा सका।

डेटा में एक स्ट्रिंग मान हो सकता है। तो मैंने कोशिश की:

let street1:Any = dict?["street1"] as Any

जब मैं स्ट्रीट 1 को प्रिंट करता हूं तो स्ट्रीट 1: वैकल्पिक ()

मुझे निम्न सड़क 1 मिलती है: वैकल्पिक ()

तो मेरा सवाल है: मैं इस डेटा को पढ़ने और यह जानने के बारे में कैसे जाउंगा कि मूल्य null है।

0
Johny D Good 22 जून 2017, 17:37

1 उत्तर

सबसे बढ़िया उत्तर

इस प्रकार की शून्य जांच के लिए आप if let का उपयोग कर सकते हैं।

इसके बजाय इसे आजमाएं:

if let street1 = dict?["street1"] as? String {
   // If this succeeds then you can use street1 in here
   print(street1)
}

अपडेट करें:

var t_street1 = ""
if let street1 = dict?["street1"] as? String { 
    t_street1 = street1 
}

अन्य की कोई आवश्यकता नहीं है t_street1 स्वचालित रूप से खाली है क्योंकि आप इसे खाली असाइन करते हैं।

1
22 जून 2017, 18:06
चूंकि मुझे बाद में एकत्र किए गए डेटा का उपयोग करने की आवश्यकता है (इसे किसी अन्य सेवा में वापस भेजना) मैंने इसे समाप्त कर दिया: [कोड] var t_street1: स्ट्रिंग = "" अगर सड़क 1 = dict? ["street1"] के रूप में? स्ट्रिंग {// यदि यह सफल होता है तो आप यहां स्ट्रीट 1 का उपयोग कर सकते हैं t_street1 = Street1 } और { t_street1 = ""}
 – 
Johny D Good
22 जून 2017, 17:57
हाँ इसने किया। क्या मैंने पूर्व टिप्पणी में करने की कोशिश करने का एक और शानदार तरीका है?
 – 
Johny D Good
22 जून 2017, 18:02
@ जॉनीडगूड, अद्यतन उत्तर की जांच करें। उत्तर को स्वीकार करने पर विचार करें ताकि भविष्य में दूसरों को इसका लाभ मिल सके।
 – 
user8200258
22 जून 2017, 18:06