2017-05-26 6 views
-2

私の場合、私は、NSStringのオブジェクトをキーとし、NSStringNSDictionaryのオブジェクトを値として持つことができるNSDictionaryオブジェクトを持っています。内部辞書には、NSDictionaryオブジェクトも含めることができます。内部のNSDictionary項目をすべて反復して変更しますか?

すべての内部オブジェクトを繰り返し処理し、それらに手紙を追加する必要がある場合はどうすればよいですか?注:私はスウィフトでは、両方の値とキー

+1

Obj-CかSwiftのどちらで作業しているかを少なくとも指定してください。 – Hamish

+0

@Hamish Swiftでラップした場合、NSDictionaryは動作が異なりますか? – Willeke

+1

NSDictionaryは変更できません。 – Willeke

答えて

1

を変更する必要があります。

func adjustNextLayer(inDictionary dictionary: inout [String:Any], for key: String) { 
    if let newString = myDictionary[key] as? String { 
     myDictionary[key] = "\(newString) insert some text to append here" 
    } else { 
     If let newDictionary = myDictionary[key] as? [String: Any] { 
      newDictionary.keys.foreach { key in 
       adjustNextLayer(inDictionary: newDictionary, for: key} 
       myDictionary[key] = newDictionary 
      } 
     } 
    } 
} 

let myDictionary = ["a":1, "b":2] 
let keys = myDictionary.keys 
keys.foreach { key in 
    adjustNextLayer(inDictionary: myDictionary, for: key) 
} 

は、あなたが迅速に機能の内の関数を置くことができることを覚えておいてください。これはすべてそれ自身の1つの機能になります。

もちろん、flatMapを使用することもできますが、それはせいぜい2つのレイヤーにしかなりません。

キーを変更する場合は、前のキーをnilに設定してから、辞書に新しいエントリを作成してください。

+0

完全な回答を書いてください。 –

+0

これはあなたが探しているものですか? –

関連する問題