2017-05-29 8 views
-2

NSDictionaryを持っているので、特定のキーにオブジェクトを追加しようとしています。どうすればいいですか?以下は私のコードです。キーに関してNSDictionaryにオブジェクトを追加する方法

let businessPhoneDic = ["locationname" : "", 
           "area" : "", 
           "number" : "", 
           "type" : "", 
         ]; 
let emailDic:NSMutableDictionary? = ["email" : "",]; 

let businessPhoneDic2 = ["locationname" : "hello", 
           "area" : "", 
          "phonenumber" : "", 
           "type" : "", 
         ]; 

var mainDictionary = ["businessPhone" : businessPhoneDic as AnyObject,"email" : emailDic as AnyObject, 
     ]; 

今、私はキーのmainDictionaryに "businessPhoneDic2" を追加する "ビジネスフォン" .How私はスウィフト3

+0

mainDictionary ["businessPhone"] = businessPhoneDic2 – PGDev

+0

はい、私はそれを試していましたが、古い辞書を新しい値に置き換えました。したがってbusinessPhoneDic2でbusinessPhoneDicを置き換えてmainDictionary ["businessPhone"]を印刷したときに出力します。 –

+0

はい、辞書には一意のキーが含まれ、そのキーに対応する1つの値しかないためです。したがって、単一のキーに複数の値を格納することはできません。 – PGDev

答えて

1

を同じキーに2つの値がマッピングされています。

スウィフト3

mainDictionary["businessPhone"] = businessPhoneDic2 

あなたの辞書に両方の値が必要な場合だけ、新しいキーを使用する、または多分のような値として辞書の配列を格納します。次のコードは、古いキーを置き換えます:その後

var mainDictionary : [String : [NSDictionary]] = ["businessPhone" : [businessPhoneDic]] 

mainDictionary["businessPhone"]?.append(businessPhoneDic2) 
+0

私はこのコード VaRのmainDictionaryを使用:[文字列:[NSDictionaryの]] = [ "ビジネスフォン":[businessPhoneDicとしてNSDictionaryの] mainDictionary [ "ビジネスフォン"]?。(「(businessPhoneDic2 NSDictionaryのような) プリントを追加== === "、AnyDocumentとしてのmainDictionary [" businessName "] しかしその戻り値

+0

もちろんです。 mainDictionaryのkey businessNameの値がありません。あなたはmainDictionary [businessPhone] .first!["businessName"]を呼んでください。businessPhoneDic辞書にbusinessNameキーがあります –

+0

ああ、申し訳ありません。 –

0

にこれ試してみてくださいことを行うことができますすることができます、定義上

mainDictionary["your key"] = businessPhoneDic2 as AnyObject // cast as per suggestions 
+0

を参照してください。 – KKRocks

+0

はい私はそれを試していましたが、古い辞書を新しい値に置き換えました。したがって、businessPhoneDic2でbusinessPhoneDicを置き換えてmainDictionary ["businessPhone"]を印刷したときに印刷されます。 –

+0

businessPhoneキーが既に存在するため、別のキーを使用してください。 – KKRocks

1

o最初fすべてSwiftでコレクションタイプMSMutable...を使用しないでください。キーbusinessPhoneの値は、あなたが追加することができ、配列の場合は、すべての

使用ネイティブ・スウィフト辞書

let emailDic = ["email" : ""] 

第二には、[String:Any]

var mainDictionary : [String:Any] = ["businessPhone" : businessPhoneDic, "email" : emailDic] 

など、さまざまな種類の辞書に注釈を付けます値。単一の辞書の場合は、配列を作成する必要があります。

このコードは、どちらの場合も考慮します。

let businessPhone = mainDictionary["businessPhone"] 

if var phone = businessPhone as? [[String:Any]] { 
    phone.append(businessPhoneDic2) 
    mainDictionary["businessPhone"] = phone 
} else if let phone = businessPhone as? [String:Any] { 
    mainDictionary["businessPhone"] = [phone, businessPhoneDic2] 
} 
0

スウィフト3.xのを

//辞書を初期化し

var dict = ["name": "Foo", "surname": "Bar"] 

//値を持つ新しいキーを追加します

dict["email"] = "[email protected]" 
print(dict) 
関連する問題