2016-12-02 21 views
0

SwiftのDictionaryにはどのように新しい鍵を追加しますか?私はエラーを取得しています:辞書に新しいキーを迅速に追加するにはどうすればよいですか?

このクラスは、キー値コーディング準拠のキーアドレスのではありません...

をここに私のコードです:

let user = [ 
    "id": id, 
    "name" : name 
] 

if customer.address != nil { 
    let address = [ 
     "street": customer.address.street, 
     "zip": customer.address.zip, 
    ] 

    user.setValue(address, forKey: "address") 
} 

更新されたコード:

var user = [ 
      "id": customer.id, 
      "name" : customer.fullName!, 
      "position" : customer.position != nil ? customer.position! : "" 
     ] 

     if customer.address != nil { 
      let address = [ 
       "street": customer.address!.street, 
       "zip": customer.address!.zip 
      ] 

      user["address"] = address 
     } 
+1

が重複する可能性[私は辞書のために値の代入を使用できないのはなぜですか](http://stackoverflow.com/questions/26313847/why-i-can-not-use- setvalue-for-dictionary) –

+2

なぜ最初に辞書を使用していますか?このようなデータのデータモデルを作成する必要があります。あなたが設定できるプロパティを持つデータ用の構造体を持つ方がずっと簡単です(もっと簡単で安全です)。 SwiftはJavaScriptではありません。それはそれのように扱うことをやめてください。 – Fogmeister

+0

@Fogmeisterデータモデルがありますが、これはサーバーにリクエストを送信する直前です。 – Prabhu

答えて

2

問題は、異なる型の値を辞書に追加しようとしていることです。異なるタイプの値を追加する場合は、Anyを使用してください。 Anyは、どのタイプのインスタンスもまったく表すことができます。例えば

var user: [String: Any] = [ 
    "id": "dd", 
    "name" : "ddd" 
] 

let address = ["street": "ss","zip": "124115"] 

user["address"] = address 
+1

はい、それでした。 – Prabhu

1

ユーザーをDictionaryデカールをに変更するだけですの代わりにsubscriptを使用して、keyで新しい値を追加してください。

var user: [String: AnyObject] = [ 
    "id": id, 
    "name" : name 
] 
user["address"] = address 
+0

エラーが発生しました。「サブスクリプトを使用して割り当てることができません:サブスクリプトは取得のみ」 – Prabhu

+0

@Prabhu 'user'ディクショナリは' var'(Nirav Dが書いたように)と宣言されていて、 'let'でないことを確認してください。 –

+0

はい、それをvarに変更しました。 – Prabhu

関連する問題