2015-05-26 12 views
6

में मैं कोड की इस पंक्ति है, और मुझे "शीर्षक" कुंजी निकालना चाहते हैं:एक प्रकार AnyObject के एक मूल्य सबस्क्रिप्ट नहीं कर सकते, स्विफ्ट

var title = jParams["title"] as! String 

लेकिन यह अभ्यस्त मुझे संकलन करते हैं, और अगर मैं मिल लाल रंग में यह त्रुटि संदेश:

प्रकार स्ट्रिंग

के एक सूचकांक के साथ एक प्रकार AnyObject के एक मूल्य सबस्क्रिप्ट नहीं किया जा सकता जब println(jParams) साथ लॉग में jParams की सामग्री को दिखाने

INCOMING LIST PARAMETERS (jParameters) 
Optional({ 
    title = "Example List"; 
    values =  (
       { 
      id = 1; 
      name = "Line 1"; 
     }, 
       { 
      id = 2; 
      name = "Line 2"; 
     }, 
       { 
      id = 3; 
      name = "Line 3"; 
     } 
    ); 
}) 

मैं स्विफ्ट के लिए नया तो मैं JSON से निपटने की समस्याओं के इन प्रकार से निपटने के लिए के विवरण के साथ परिचित नहीं हूँ हूँ: मैं निम्नलिखित सामग्री मिलता है। क्या गलत हो सकता है?

//jParams comes from a JSON server response 
var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil) 
      if data != nil { 
       var jdata = JSON(data: data!) 
       var jParams=jdata["responseData"]["extraData"]["params"] 
+0

जेपीराम कैसे परिभाषित किया जाता है? यह किस प्रकार का है? –

+0

हाय @MarcosCrispino मैंने इसके बारे में उत्तर में कोड का एक टुकड़ा जोड़ा है। – Josh

उत्तर

11

आपके संपादन में ऐसा लगता है कि आप SwiftyJSON का उपयोग कर रहे हैं।

हैं कि वास्तव में मामला है, आप मदद कर सकते हैं संकलक को पता है कि SwiftyJSON के dictionaryValue संपत्ति का उपयोग करके शब्दकोश में बताया गया है:

:

let jParams = jdata["responseData"]["extraData"]["params"].dictionaryValue 

तो फिर तुम downcasting के बिना अपने मूल्यों का उपयोग करने के लिए सक्षम होना चाहिए

let title = jParams["title"] 

क्योंकि स्विफ्टजेसन ने मूल्यों के लिए सही प्रकार का अनुमान लगाया होगा।

+0

यह सही उत्तर है और इसे चिह्नित किया जाना चाहिए। इसके अतिरिक्त, यदि आप अभी भी एक वैकल्पिक शब्दकोश चाहते हैं, तो आप 'शब्दकोश' संपत्ति का उपयोग कर सकते हैं। – Ralfonso

+0

आकर्षण की तरह काम करता है! मैं वास्तव में स्विफ्टजसन का उपयोग कर रहा था, ".dictionaryValue" कुंजी था, धन्यवाद। – Josh

संबंधित मुद्दे