如何编写 - 如果项目与多个数字不匹配 - 在Swift中?

时间:2015-06-04 23:58:59

标签: ios swift

我有一个按钮网格11个按钮x 7个按钮。我需要检查不在网格外边缘的按钮的标签。我目前的解决方案是排除外边缘的标签。按钮位于outlet collection。所以我需要排除的标签是0-10,21,32,43,54,65,76,0,11,22,33,44,55,66-76。

如何检查if语句中的项目是否与for循环内的项目匹配多个数字?如果我用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)

    }
}

1 个答案:

答案 0 :(得分:1)

我可以想到两种方式。首先是ClosedIntervals

(0...10).contains(3) // true

或者如果你有更复杂的数字,你可以在其他CollectionTypes上使用contains方法:

Set([2, 5, 8]).contains(5) // true

虽然我不确定你要做什么。 (例如,对于每个数字,语句x != 0 || x != 1 || x != 2将返回true。也许您的意思是x != 0 && x != 1 && x != 2?)

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

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) {...