创建数组 swift

Create Array swift

我不是很专业Swift。

我创建了一个需要数据的自定义视图:

var myData = [
    ["label" : "2000",   "value" : NSNumber(int:15)],
    ["label" : "2001",   "value" : NSNumber(int:7)],
    ["label" : "2002",   "value" : NSNumber(int:60)],
    ["label" : "2003",   "value" : NSNumber(int:30)],
    ["label" : "2004",   "value" : NSNumber(int:15)],
    ["label" : "2005",   "value" : NSNumber(int:45)],
    ["label" : "2006",   "value" : NSNumber(int:45)],
    ["label" : "2007",   "value" : NSNumber(int:50)],
    ["label" : "2008",   "value" : NSNumber(int:60)],
    ["label" : "2009",   "value" : NSNumber(int:70)],
    ["label" : "2010",   "value" : NSNumber(int:80)],
    ] as NSArray

如何以编程方式生成此文件?

让我解释一下:

我有两个包含年份的列表,另一个包含值:

var listYear = []

var listValue = []

这两个列表如何生成数组 myData?

最简单的方法是

let listYear = ["2000","2001","2002"]
let listValue  = [1,2,3]
var combined : [[String:AnyObject]] = []

for i in 0..<listYear.count
{
    combined.append(["label" : listYear[i], "value" : NSNumber(integer:listValue[i])])
}

println(combined)

更复杂的方法

let listYear = ["2000","2001","2002"]
var listValue  = [1,2,3]

let combined = map(Zip2(listYear, listValue)) {
    ["label" : [=11=], "value" : NSNumber(integer:)]
}

您可以将 mapenumerate 组合起来构建这样的字典数组:

let listYear = [2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010]
let listValue = [15, 7, 60, 30, 15, 45, 45, 50, 60, 70, 80]

let list: [[String : Int]] = map(enumerate(listYear)) { (index, year) in
    return [ "label": year, "value": listValue[index]]
}

当然要做到这一点 listYearlistValue 必须具有相同数量的元素,并且它们的元素之间的关联是通过索引完成的。