如何在Swift中追加关联数组元素

时间:2015-05-25 11:58:57

标签: ios swift

如何在Swift中创建和追加关联数组?我认为它应该类似于以下内容(请注意,某些值是字符串,其他值是数字):

var myArray = []

var make = "chevy"
var year = 2008
var color = "red"

myArray.append("trackMake":make,"trackYear":year,"trackColor":color)

目标是能够有一个充满结果的阵列,我可以拨打电话,如:

println(myArray[0]["trackMake"]) //and get chevy
println(myArray[0]["trackColor"]) //and get red

4 个答案:

答案 0 :(得分:6)

就像这样:

myArray.append(["trackMake":make,"trackYear":year,"trackColor":color])

添加括号。这将使它成为一个哈希并将其附加到数组。

在这种情况下,(广泛)使用let

let dict  = ["trackMake":make,"trackYear":year,"trackColor":color]
myArray.append(dict)

以上假设您的myArray已被声明为

var myArray = [[String:AnyObject]]()

所以编译器知道它将采用字典元素。

答案 1 :(得分:3)

我接受上面的回答。这很好。即使你给出了正确的答案,我也想给出最简单的方法。如果你们跟着那个人,那么下面的步骤很有用。如果有人是快速的,如果他们经历这个,他们可以很容易地理解这些步骤。

步骤1:声明并初始化变量

  var array = Array<AnyObject>()
  var dict = Dictionary<String, AnyObject>()
  var make = "chevy"
  var year = 2008
  var color = "red"

第2步:设置字典(添加键和值)

  dict["trackMake"] = make
  dict["trackYear"] = year
  dict["trackColor"] = color
  println("the dict is-\(dict)")

步骤3:将Dictionary附加到数组

  array.append(dict)
  println("the array is-\(array)")

第4步:获取变量的数组值(创建获取值的变量)

  let getMakeValue =  array[0]["trackMake"]
  let getYearValue = array[0]["trackYear"]
  let getColorValue = array[0]["trackColor"]

  println("the getMakeValue is - \(getMakeValue)")
  println("the getYearValue is - \(getYearValue)")
  println("the getColorVlaue is - \(getColorValue)")   

步骤5:如果要获取字符串值,请执行以下步骤

 var stringMakeValue:String = getMakeValue as String
 var stringYearValue:String = ("\(getYearValue as Int)")
 var stringColorValue:String = getColorValue as String

 println("the stringMakeValue is - \(stringMakeValue)")
 println("the stringYearValue is - \(stringYearValue)")
 println("the stringColorValue is - \(stringColorValue)")

步骤6:最后总输出值

the dict is-[trackMake: chevy, trackColor: red, trackYear: 2008]

the array is-[{
trackColor = red;
trackMake = chevy;
trackYear = 2008;
}]

the getMakeValue is - Optional(chevy)
the getYearValue is - Optional(2008)
the getColorVlaue is - Optional(red)

the stringMakeValue is - chevy
the stringYearValue is - 2008
the stringColorValue is - red

谢谢

答案 2 :(得分:1)

这听起来像是你想要一组代表车辆的物体。您可以拥有一系列字典或一系列车辆对象。

可能你会想要使用一个对象,因为必须输入Swift数组和字典。所以你的字典中包含不同类型值的字符串键,最终会得到类型[String : Any],你会被卡住来回。这将使您的数组类型为[[String : Any ]]

使用对象,您将拥有该类型的数组。假设您的车辆对象的类型名为Vehicle,这将使您的数组类型[Vehicle]和每个数组访问将返回该类型的实例。

答案 3 :(得分:0)

如果我想用我自己的陈述来尝试。我还希望使用字典中的数据扩展我的数组,并从字典中打印密钥:

var myArray = ["Abdurrahman","Yomna"]

var myDic: [String: Any] = [
    "ahmed": 23,
    "amal": 33,
    "fahdad": 88]

for index in 1...3 {

    let dict: [String: Any] = [
        "key": "new value"
    ]

    // get existing items, or create new array if doesn't exist
    var existingItems = myDic[myArray] as? [[String: Any]] ?? [[String: Any]]()

    // append the item
    existingItems.append(myArray)

    // replace back into `data`
    myDic[myArray] = existingItems
}