Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何检查任何对象类型的二维数组是否包含swift中的内容_Arrays_Swift_Contains - Fatal编程技术网

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)")
}