swift 中的二维空数组(String 和 Bool)
2D empty array ( String and Bool) in swift
我看到一些关于多维数组和二维数组的问题,但其中 none 显示了如何正确实现空数组。
我有一个待办事项列表,其中的单元格中有一个复选框。目前我将待办事项存储在一个数组中,将 bool 值存储在另一个数组中...我的应用程序开始变大,所以我更愿意将它们都放在一个数组中。
我该如何正确操作?
var cellitemcontent = [String:Bool]()
如果这是正确的方法,那么我会在
处收到错误
cellitemcontent.append(item) //String: Bool does not have a member named append
所以我假设这是声明字典而不是二维数组的方法...
另外,我将如何存储二维数组?当它是一维时,我这样存储它:
NSUserDefaults.standardUserDefaults().setObject(cellitemcontent, forKey: "cellitemcontent") // Type '[(name: String, checked: Bool)]' does not conform to protocol 'AnyObject'
您可以创建一个元组数组,如下所示:
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
我看到一些关于多维数组和二维数组的问题,但其中 none 显示了如何正确实现空数组。
我有一个待办事项列表,其中的单元格中有一个复选框。目前我将待办事项存储在一个数组中,将 bool 值存储在另一个数组中...我的应用程序开始变大,所以我更愿意将它们都放在一个数组中。
我该如何正确操作?
var cellitemcontent = [String:Bool]()
如果这是正确的方法,那么我会在
处收到错误cellitemcontent.append(item) //String: Bool does not have a member named append
所以我假设这是声明字典而不是二维数组的方法...
另外,我将如何存储二维数组?当它是一维时,我这样存储它:
NSUserDefaults.standardUserDefaults().setObject(cellitemcontent, forKey: "cellitemcontent") // Type '[(name: String, checked: Bool)]' does not conform to protocol 'AnyObject'
您可以创建一个元组数组,如下所示:
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