swift中的2D空数组(String和Bool)

时间:2015-03-24 07:26:09

标签: arrays swift 2d dimensional

我看到了多维数组和二维数组的一些问题,但没有一个显示如何正确实现空数组。

我有一个待办事项列表,我在单元格中有一个复选框。目前我将todo项目存储在一个数组中,并将bool值存储在另一个数组中...我的应用程序开始变大,所以我更愿意将它们放在一个数组中。

我该如何正确地做到这一点?

var cellitemcontent = [String:Bool]() 

如果这是正确的方法,那么我在

处得到错误
cellitemcontent.append(item) //String: Bool does not have a member named append

所以我假设这是如何声明一个字典而不是二维数组...

另外,我如何存储2D数组?当它是1D我存储它像这样:

NSUserDefaults.standardUserDefaults().setObject(cellitemcontent, forKey: "cellitemcontent") // Type '[(name: String, checked: Bool)]' does not conform to protocol 'AnyObject'

1 个答案:

答案 0 :(得分:4)

您可以创建一个元组数组,如下所示:

var cellitemcontent:[(name:String,checked:Bool)] = []

cellitemcontent.append(name: "Anything",checked: true)

cellitemcontent[0].name    // Anything
cellitemcontent[0].checked // true

如果您需要使用用户默认值存储它,您可以使用子阵列而不是元组,如下所示:

var cellitemcontent:[[AnyObject]] = []

cellitemcontent.append(["Anything", true])

cellitemcontent[0][0] as String   // Anything
cellitemcontent[0][1] as Bool     // true

NSUserDefaults().setObject(cellitemcontent, forKey: "myArray")
let myLoadedArray = NSUserDefaults().arrayForKey("myArray") as? [[AnyObject]] ?? []

myLoadedArray[0][0] as String
myLoadedArray[0][1] as Bool