2017-12-30 16 views
0

私はちょうどJSONに慣れ始めました。 JSONを渡して初期化するクラスオブジェクトがあります。このオブジェクトには空の配列があり、値をチェックする必要があります。これまで私がしようとしています:配列のSwiftのjsonの配列にオプションの要素を追加する

init(json: JSON) { 
    id = json["id"].string 
    type = json["type"].string 
    text = json["text"].string 
    answer = json["answer"].string 
    format = json["format"].string 
    answeredBy = [] 

    if let answeredByjson = json["answeredBy"].array { 
     for (_, userDict) in answeredByjson { 
      if let userDict = userDict as? [String : Any] { 
       answeredBy.append(JSON(User(dictionary: userDict))) 
      } 
     } 
    } 
} 

要素は、他のオブジェクト(ユーザー)を初期化するために使用する必要がある辞書です。 私は次のエラーを受け取ります:

表現型 '[JSON]'は、それ以上の文脈なしではあいまいです。

コードを更新するにはどうすればよいですか?

これは私のJSONです:

{   
    "answer" : "rachel", 
     "answeredBy" : { 
     "j1K4WXbOFRXfm3srk9oMtZJ8Iop2" : { 
      "email" : "an email", 
      "pictureURL" : "a URL", 
      "uid" : "j1K4WXbOFRXfm3srk9oMtZJ8Iop2", 
      "name" : "a name" 
     }, 
     "vtYlmyerugedizHyOW6TV847Be23" : { 
      "email" : "an email", 
      "pictureURL" : "a URL", 
      "uid" : "vtYlmyerugedizHyOW6TV847Be23", 
      "name" : "Rusty Shakleford" 
     } 
     }, 
     "format" : "field", 
     "id" : "1", 
     "type" : "text", 
     "text" : "In a foot race, Jerry was neither first nor last. Janet beat Jerry, Jerry beat Pat. Charlie was neither first nor last. Charlie beat Rachel. Pat beat Charlie. Who came in last?" 
    } 
+0

どの行が正確にエラーが発生しましたか? 'JSON'とは何ですか(投稿したコードのデータ型を参照しています)。 – rmaddy

+0

@rmaddyおそらくSwiftyJSON –

+0

申し訳ありません。私はSwiftyJSONを使用しています – Sente

答えて

0
if let answeredByjson = json["answeredBy"].array { 
    ... 
} 

は、配列[JSON]を生成するが、あなたはそれが辞書[String: JSON]を生み出すことを期待しています。あなたが受け取る理由です:

表現型は '[JSON]' 辞書を生成するには、よりコンテキスト

せずにあいまいです:

if let answeredByjson = json["answeredBy"].dictionary { 
    ... 
} 

それあなたはそれを期待していません[String: JSON]を作成すると、この行は意味をなさない

for (_, userDict) in answeredByjson { 
関連する問題