我有一个按钮网格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)
}
}
答案 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) {...