Ios 如果项目与多个数字不匹配,如何在Swift中写入?
我有一个由11个按钮x 7个按钮组成的网格。我需要检查不在网格外部边缘的按钮的标签。我当前的解决方案是排除外部边缘上的标记。按钮位于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
插座集合中
。所以我需要排除的标签是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您是对的,和&
是正确的运算符。