Arrays 如何检查任何对象类型的二维数组是否包含swift中的内容
我有一个声明为Arrays 如何检查任何对象类型的二维数组是否包含swift中的内容,arrays,swift,contains,Arrays,Swift,Contains,我有一个声明为var cellitemcontent:[[AnyObject]]=[] 我在其中存储字符串和布尔值([苹果,false;香蕉,false;鸡蛋,true]) 当我尝试查看cellitemcontent是否包含任何假值时,我会: 如果cellitemcontent[0][1]为Bool==false{}//致命错误:无法索引空缓冲区 或者如果我尝试: 如果包含((cellitemcontent[0][1]作为Bool),则为false){}//类型“Bool”不符合协议“Sequ
var cellitemcontent:[[AnyObject]]=[]
我在其中存储字符串和布尔值([苹果,false;香蕉,false;鸡蛋,true])
当我尝试查看cellitemcontent是否包含任何假值时,我会:
如果cellitemcontent[0][1]为Bool==false{}//致命错误:无法索引空缓冲区
或者如果我尝试:
如果包含((cellitemcontent[0][1]作为Bool),则为false){}//类型“Bool”不符合协议“SequenceType”
注:我之所以将其作为任意对象而不是元组,是因为我将其保存到NSUserDefaults,并且有人告诉我不能在默认值中保存一个元组。您不应该将布尔类型与true进行比较。这是多余的。您可以简单地执行以下操作:
if (cellitemcontent[0][1] as Bool) {
// your code
}
或者,如果您想检查它是否为false,只需在它前面添加一个感叹号:
if !(cellitemcontent[0][1] as Bool) {
// your code
}
//
var-cellitemcontent:[[AnyObject]]=[]
cellitemcontent.append([“apple”,false])
cellitemcontent.append([“banana”,false])
追加([“egg”,true])
对于0..中的索引,您还可以将cellItemContents
映射到仅包含Bool
值的数组-新数组的索引将与原始数组的索引匹配:
let bools = cellItemContents.map { $0[1] as Bool }
以原始的[[apple,false],[banana,false],[egg,true]]
数组为例,您将得到一个新的数组,[false,false,true]
,您可以用它做任何您想做的事情:
println(contains(bools, false)) // prints "true"
除非您特别需要2D数组,否则使用字典可能会更容易:
let myDict = ["apple": false, "banana": false, "egg": true]
if myDict["apple"]! {
println("The food is an apple.")
} else {
println("The food is not an apple.") // Prints
}
if myDict["banana"]! {
println("The food is an apple.")
} else {
println("The food is not an apple.") // Prints
}
if myDict["egg"]! {
println("The food is an apple.") // Prints
} else {
println("The food is not an apple.")
}
在另一条评论中回答您的问题时,重复如下:
for (food, value) in myDict {
println("The \(food) is \(value)")
}
嗯,但是我如何浏览整个列表而不是单个值[?][1]?我应该做一个for循环吗?只要把它放在一个简单的循环中,并使用一个索引字典的想法是一个伟大的想法,但不要使用代码>。当您试图访问字典中不存在的值时,代码将立即崩溃,即,if myDict[“pear”]代码>…kaboom。我不能使用字典,因为这更像是一个待办事项列表,我不断地删除和插入新值并移动它们,我需要indexPath等。我相信Swift 1.2返回可选值,所以“if-let”模式(无论如何都会更好)将是唯一的其他选项。(我还没有找到证实这一点的文档。)
for (food, value) in myDict {
println("The \(food) is \(value)")
}