2017-09-27 4 views
-3

jsonの文字列をクラスオブジェクトに変換しようとしています。これは、これは私が私がこのような値を見ることができ、デバッグにJSONオブジェクト__NSDictionaryI swift3の値を読み取る方法

userChallegeResp = UserChallengeResponse(json: ref.responseObject!)! 
let questions:[ChallengeQuestion] = self.userChallegeResp.questions 

を渡す方法ですクラス

class UserChallengeResponse : NSObject{ 
    var key : String? 
    var questions : [ChallengeQuestion] = [] 

init?(json: [String: Any]) { 
     guard let key = json[PropertyKey.key] as? String , 
      [ChallengeQuestion] else { return nil } 
      let questions = json[PropertyKey.questions] else { return nil }   
     self.key = key 
     self.questions = questions as! [ChallengeQuestion]  
    } 
} 

です。 enter image description here

私はこの

questions[1] 

のような値にアクセスしようとすると、エラー、私はこの質問の配列にアクセスするにはどうすればよい

を「NSArrayの要素は、スウィフト配列要素型と一致しなかった」スロー?

+0

["primary"]質問を読むために0インデックスに移動するにはどうすればよいですか? Javaのgsonのようなクラスにjsonオブジェクトをキャストする方法はありますか? – Thushara

+0

イメージには1つのインデックスがあります。また、画像2の値の上端にも表示されます。 0のインデックスと同じエラー – Thushara

+0

スクリーンショットのどの配列にもインデックス '1'がありません。全く異なるものであるインデックス '[1] 'を見ると、辞書のキーはアソートされ、全くインデックスされません。実際の価値はより多くの可能性が高いようです。 String'を私に渡すと、_key_の配列はここで解析されていません。 – holex

答えて

0

通常行って:

guard let responseData = data 
     else { 
      print("parse tokens failed") 
      return 
    } 

    do { 
     if let json = try JSONSerialization.jsonObject(with: responseData, options: JSONSerialization.ReadingOptions.allowFragments) as? [String : AnyObject] { 
      if let tokens = Tokens(JSON: json) { 
       self.tokens = tokens 
      } 
     } 
    } catch { 
     print("json error: \(error)") 
    } 
    self.isFinished = true 
} 

あなたの間違いは、あなたが取得したデータの右のカスタマイズを行っているということです。

関連する問題