2017-04-03 2 views
1

配列を含む既存の辞書に値を追加しようとしています。辞書には配列以外の値も含まれているため、値の型はAnyでなければなりません。問題は、私がこれを行うと、エラーCannot use mutating member on immutable value of type '[String]'が出るということです。いくつかのグーグルは、辞書内の配列は常に不変であることを示唆しているようにthisなど、いくつかの参照を上がって、私はこれを行う場合、コンパイラは文句はありません:ダウンキャスト後に辞書内に配列を追加するときの不変値エラー

var someDict = [String:[String]]() 
someDict["foo"] = ["hello"] 
someDict["foo"]?.append("goodbye") 

ので、私は情報が古くなっていると思われる、それは固有の何かダウンキャスティング辞書の値全体をコピーして再割り当てせずにこれを回避できる方法はありますか?

+0

@robどうぞご覧ください。 – nayem

答えて

0

はい、ダウンキャストに関連しています。代わりにこれを試してみてください:

var someDict = [String:Any]() 
someDict["foo"] = ["hello"] 
if var arr = someDict["foo"] as? [String] { 
    arr.append("goodbye") 
    someDict["foo"] = arr 
} 
関連する問題