【问题标题】:Checking for Int in Array . Swift 3, iOS检查 Array 中的 Int 。斯威夫特 3,iOS
【发布时间】:2017-02-16 21:50:24
【问题描述】:

我有以下代码:

print (sender.tag) // prints 21  (example)
print(DictPl2) // prints [0, 1, 20, 21, 84, 94, 26, 27, 37, 55, 56, 66, 52, 53, 54, 55, 72, 73, 74, 75]
var DictPl2 = [Int]()
if playeractive == 1 {
 for i in DictPl2 {
                if i == sender.tag {
                    print("Well done")
                    sender.backgroundColor = UIColor.red

                }

                else {    //always goes this
                    print("Bad")
                    sender.backgroundColor = UIColor.brown
                }
            }

我正在检查 sender.tag 是否等于数组 DictPl2 中的任何元素。但如果它相等或不相等,代码总是按照标记的方式进行。任何人都知道,可能是什么错误? 谢谢

【问题讨论】:

  • 你还记录 i 和记录 sender.tag 吗?可能是您没有正确设置发件人的标签?
  • 请注意,您对 所有 数组元素执行比较 - 最后一个元素获胜!
  • 我明白了,也谢谢!

标签: ios swift int sender


【解决方案1】:

您可以只使用DictPl2.contains(sender.tag) 而不是您的for loop。那么您的代码将如下所示:

if DictPL2.contains(sender.tag) {
    print("Well done")
    sender.backgroundColor = UIColor.red
} else {
    print("Bad")
    sender.backgroundColor = UIColor.brown
}

【讨论】:

  • 很好,工作,谢谢!但不知道为什么代码当时不起作用。
  • @TobyV。既然它有效,你能接受它作为答案吗? :)
  • @StefanStefanov 你可以使用三元运算符sender.backgroundColor = DictPL2.contains(sender.tag) ? .red : .brown来简化你的代码
  • 我正在考虑它,但也许他想保留他的 print() 语句以进行调试。但是很好的建议@LeoDabus!
【解决方案2】:

在 Swift 3.2 中

if DictPL2.contains(where: {$0 == sender.tag) {
    print("Well done")
} else {
    print("Bad")
}

请查看Apple Guide

【讨论】:

    猜你喜欢
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    相关资源
    最近更新 更多