1

データ:

[
    { firstName: "Foo", lastName: "Bar" },
    { firstName: "John", lastName: "Doe" }
]

迅速な配列と辞書を使用して、この種の構造をどのように持つことができますか? このデータは、配列内の辞書を示していますよね? だから私は提案します:

var persons:Array = [Dictionary<String, String>()]

しかし、これは私にエラーを与えます:

Cannot convert the expressions type () to type Array<T>

何か案は?

4

4 に答える 4

2

本当に配列内に辞書が必要ですか? あなたが与えたコードは、次のようなものを使用して達成できる名前付き列を持つ配列を示しています。

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"] )
于 2015-03-07T10:46:27.907 に答える
0

このようなものはあなたのために働くことができます:

var persons: Array<Dictionary<String, String>> = Array()

そして今、あなたは名前を追加することができます:

persons.append(["firstName": "Foo", "lastName": "Bar"]);
persons.append(["firstName": "John", "lastName": "Doo"]);

注: リテラルの使用方法に自信がない場合は、使用しないでください

于 2014-11-04T12:27:26.310 に答える