私はSwiftと実験をするのが初めてです。辞書値の単純な配列を作成しようとしています。これはお粗末ですが、辞書オブジェクト用に短いコードを4回複製し、各セクションの値を変更してから、4つをそれぞれ配列に追加しました。辞書を辞書に追加するときに重複する理由
私は配列を印刷するとき、最後の辞書オブジェクトの4つのバージョンが含まれています。どのようにすることができますか?私は4つの辞書オブジェクト、すなわち各オブジェクトの1つが追加されているために配列が期待されていました。
func countDown() {
let dict: NSMutableDictionary = [:]
let enduroArrayFile = NSMutableArray()
dict.setObject(1, forKey: "SectionDistance")
dict.setObject("S", forKey: "Direction")
dict.setObject(0, forKey: "ArrivalTime")
dict.setObject(0, forKey: "AverageSpeed")
//saving dictionary to array
enduroArrayFile.addObject(dict)
dict.setObject(1.2, forKey: "SectionDistance")
dict.setObject("S", forKey: "Direction")
dict.setObject(0, forKey: "ArrivalTime")
dict.setObject(0, forKey: "AverageSpeed")
//saving dictionary to array
enduroArrayFile.addObject(dict)
dict.setObject(2, forKey: "SectionDistance")
dict.setObject("R", forKey: "Direction")
dict.setObject(0, forKey: "ArrivalTime")
dict.setObject(0, forKey: "AverageSpeed")
//saving dictionary to array
enduroArrayFile.addObject(dict)
dict.setObject(2.1, forKey: "SectionDistance")
dict.setObject("S", forKey: "Direction")
dict.setObject(0, forKey: "ArrivalTime")
dict.setObject(0, forKey: "AverageSpeed")
//saving dictionary to array
enduroArrayFile.addObject(dict)
print (enduroArrayFile)
}
出力はあなたが誤って何度もdict
を再利用している
(
{
ArrivalTime = 0;
AverageSpeed = 0;
Direction = S;
SectionDistance = "2.1";
},
{
ArrivalTime = 0;
AverageSpeed = 0;
Direction = S;
SectionDistance = "2.1";
},
{
ArrivalTime = 0;
AverageSpeed = 0;
Direction = S;
SectionDistance = "2.1";
},
{
ArrivalTime = 0;
AverageSpeed = 0;
Direction = S;
SectionDistance = "2.1";
}
)
NSDictionaryは*参照型ですので*。あなたは同じ単独辞書を参照する4つの配列を作成します。 –
代わりにSwiftの値の型を使用することを検討してください:辞書、配列、... –