Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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
Ios 如果项目与多个数字不匹配,如何在Swift中写入?_Ios_Swift - Fatal编程技术网

Ios 如果项目与多个数字不匹配,如何在Swift中写入?

Ios 如果项目与多个数字不匹配,如何在Swift中写入?,ios,swift,Ios,Swift,我有一个由11个按钮x 7个按钮组成的网格。我需要检查不在网格外部边缘的按钮的标签。我当前的解决方案是排除外部边缘上的标记。按钮位于插座集合中。所以我需要排除的标签是0-10,21,32,43,54,65,76,0,11,22,33,44,55,66-76 如何检查位于for循环内部的if语句中的项是否与多个数字匹配?您可以看到,如果我使用28种不同的|条件播放,下面的代码将变得一团糟。我试图匹配的数字不是按顺序排列的 for item in buttonOutlets { if it

我有一个由11个按钮x 7个按钮组成的网格。我需要检查不在网格外部边缘的按钮的标签。我当前的解决方案是排除外部边缘上的标记。按钮位于
插座集合中
。所以我需要排除的标签是0-10,21,32,43,54,65,76,0,11,22,33,44,55,66-76

如何检查位于for循环内部的if语句中的项是否与多个数字匹配?您可以看到,如果我使用28种不同的
|
条件播放,下面的代码将变得一团糟。我试图匹配的数字不是按顺序排列的

for item in buttonOutlets {

    if item.tag != 0 || item.tag != 1 || item.tag != 2  {

    var tag = item.tag
    var tagMinusOne: Int? = Int(item.tag) - 1
    var tagMinusTen: Int? = Int(item.tag) - 10
    var tagMinusEleven: Int? = Int(item.tag) - 11
    var tagMinusTwelve: Int? = Int(item.tag) - 12
    var titleLabel = item.titleLabel?.text
    var minusTwelve: String? = buttonOutlets[tagMinusTwelve!].titleLabel?.text!
    var minusOne: String? = buttonOutlets[tagMinusOne!].titleLabel?.text!

    }

}
这是一个可行但混乱的方法。请注意,标记不在理想范围内。更新代码:

func checkForMatchingCells() {

for item in buttonOutlets {

    var tag = item.tag as Int

    if tag != 0
    && tag != 1
    && tag != 2
    && tag != 3
    && tag != 4
    && tag != 5
    && tag != 6
    && tag != 7
    && tag != 8
    && tag != 9
    && tag != 10
    && tag != 11
    && tag != 12
    && tag != 33
    && tag != 44
    && tag != 55
    && tag != 21
    && tag != 32
    && tag != 43
    && tag != 54
    && tag != 65
    && tag != 66
    && tag != 67
    && tag != 68
    && tag != 69
    && tag != 70
    && tag != 71
    && tag != 72
    && tag != 73
    && tag != 74
    && tag != 75
    && tag != 76 {

    println(tag)
    var tagMinusOne: Int? = Int(item.tag) - 1
    var tagMinusTen: Int? = Int(item.tag) - 10
    var tagMinusEleven: Int? = Int(item.tag) - 11
    var tagMinusTwelve: Int? = Int(item.tag) - 12
    var titleLabel = item.titleLabel?.text
    var minusTwelve: String? = buttonOutlets[tagMinusTwelve!].titleLabel?.text
    var minusOne: String? = buttonOutlets[tagMinusOne!].titleLabel?.text
    println(minusOne)

    }
}

我可以想出两种方法。第一种是使用
关闭间隔

(0...10).contains(3) // true
或者,如果您有更复杂的数字,可以在其他CollectionType上使用contains方法:

Set([2, 5, 8]).contains(5) // true
虽然我不知道你想做什么。(例如,语句
x!=0 | | x!=1 | | x!=2
将为每个数字返回true。您的意思可能是
x!=0&&x!=1&&x!=2
?)

通过编辑,最有效的解决方案是创建一组要排除的内容:

var toExclude: Set = [21, 32, 43, 54, 65, 76, 0, 11, 22, 33, 44, 55]

toExclude.unionInPlace(0...10)
toExclude.unionInPlace(66...76)
然后,if语句中的条件是:

if !toExclude.contains(item.tag) {...

你的目标是什么?我们不知道你想做什么,所以我们找不到模块化的方法。你的布尔逻辑有错误<代码>item.tag!=0 | | item.tag!=1将始终为真。它永远不会到达
| | item.tag!=2
部分。我真正想做的是为收藏出口中我想要的按钮指定索引号,而不是引用标签,但我也没有找到解决方案。@dreamlax您是对的,
和&
是正确的运算符。