如何在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
答案 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
}