2016-06-03 13 views
7

में जेसन नल मानों को कैसे संभालना है मैं पिछले दो दिनों से जेएसओएन के साथ खेल रहा हूं और बहुत उत्सुक समस्याओं का सामना कर रहा हूं और स्टैक ओवरफ्लो के लिए धन्यवाद, यह मेरी मदद करता है। यह जेएसओएन फीचर्ड कुंजी है स्ट्रिंग प्रकार के मूल्यों को टॉव प्रकार।स्विफ्ट

"featured":"1" 

या

"featured": null, 

मैं एक बहुत इस संभाल करने की कोशिश की लेकिन असफल

step 1) 

if dict.objectForKey("featured") as? String != nil { 
    featured = dict.objectForKey("featured") as? String 
    } 

कदम 2)

let null = NSNull() 
    if dict.objectForKey("featured") as? String != null { 
    featured = dict.objectForKey("featured") as? String 
    } 

कदम 3)

if dict.objectForKey("featured") as? String != "" { 
    featured = dict.objectForKey("featured") as? String 
    } 

लेकिन दुर्भाग्य से समाधान नहीं मिल रहा है, तो आपके उत्तर की सराहना की जाएगी।

+0

चेनिंग यह दुर्घटना खड़ी कर रहा है के बारे में वैकल्पिक और अधिक जानना चाहते हैं: - सभी तीन चरणों संयुक्त (बहुत NSNull, खाली स्ट्रिंग नहीं है, गलत प्रकार)? –

+0

हाँ कोर्डटा –

उत्तर

16

यहाँ यह

func nullToNil(value : AnyObject?) -> AnyObject? { 
    if value is NSNull { 
     return nil 
    } else { 
     return value 
    } 
} 

object.feature = nullToNil(dict["feature"]) 

का प्रयास करें, आप इस विधि है, जो आपके एप्लिकेशन में नहीं के बराबर है और अभ्यस्त क्योंकि दुर्घटना के शून्य मान परिवर्तित कर देंगे उपयोग कर सकते हैं।

आप का उपयोग भी कर सकते हैं?

object.feature = dict["feature"] as? NSNumber 

धन्यवाद।

+0

संग्रहीत करने में अच्छा जवाब धन्यवाद !!!! – MRizwan33

2

इसे आज़माएं!

if let demoQuestion = dict.objectForKey("featured"){ 
    let getValue: String = demoQuestion as! String 
} 
else { 
print("JSON is returning nil") 
} 
5

यहां एक कामकाजी कोड है, टाइप कास्ट ऑपरेटर (जैसा?) यहां चाल करेगा। नल स्ट्रिंग में टाइपकास्ट नहीं किया जाएगा, इसलिए निष्पादन विफलता ब्लॉक पर जाएगा।

if let featured = dict["featured"] as? String { 
    print("Success") 
} 
else { 
    print("Failure") 
} 
+0

यह मेरे लिए काम करता है .. लेकिन कुछ और तर्क में –

3

if let या इसके समकक्ष guard let साथ वैकल्पिक श्रृंखलन जाने का रास्ता है।

guard let featured = dict.objectForKey("featured") as? String where !value.isEmpty else { 
    print("featured has wrong value") 
} 

// do what you need to do with featured 

आप check out documentation