本当に配列内に辞書が必要ですか? あなたが与えたコードは、次のようなものを使用して達成できる名前付き列を持つ配列を示しています。
struct Name {
var firstName : String
var lastName : String
}
var persons1 : Array<Name> = [
Name(firstName: "Foo", lastName: "Bar"),
Name(firstName: "John", lastName: "Doe")
]
persons1[0].firstName // "Foo"
var persons2 : Array<(firstName: String, lastName:String)> = [
(firstName: "Mary", lastName: "Mean"),
(firstName: "Foo", lastName: "Bar"),
(firstName: "John", lastName: "Doe")
]
persons2[1].firstName // "Bar"
これらは適切な配列であり、添字を使用してそのようにアドレス指定されています。通常、ディクショナリ タイプはキーと値の組み合わせです。つまり、ニックネームがキーで、名前が値です。
var nickNames : [String:String] = [
"mame" : "Mary Mean",
"foba" : "Foo Bar",
"jodo" : "John Doe"]
nickNames["mame"]! // "Mary Mean"
そして、ここでキー値を検索し、オプションの値を返します。これを強制的にアンラップしました...
これらはすべてかなり簡単に追加できますが、名前付きタプル バリアントpersons2
は推奨される方法に従っていないことに注意してください。また、最後のインジェクションで提案されているように、辞書の配列を使用すると、さまざまなキーに含めることができることに注意してください。
persons1.append( Name(firstName: "Some", lastName: "Guy") )
persons2.append( firstName: "Another", lastName: "Girl" )
nickNames["anna"] = "Ann Nabel"
// Array of Dictionaries
var persons : [[String:String]] = [
[ "firstName" : "Firstly", "lastName" : "Lastly"],
[ "firstName" : "Donald", "lastName" : "Duck"]
]
persons.append( ["firstName" : "Georg", "middleName" : "Friedrich", "lastName" : "Händel"] )