Swift标签没有变化

时间:2017-03-18 17:17:52

标签: ios swift xcode uilabel

我希望在文本字段包含两个数组中的一个单词时更改标签,当我启动应用程序时,如果我插入第一个数组的单词。然后我插入第二个数组的一个单词,这也有效,但如果我再次插入第一个数组的一个单词,标签就不会改变。

var one = ["word1", "word2", "word3"]
var two = ["word4", "word5", "word6"]
var count1 = 0
var count2 = 0
let s = textField.text?.lowercased()

    for item in one{
        if (s?.contains(item))!{
            count1+=1
        }
    }
    if count1 > 0{

        label.text = "First array"

    }
for item in two{
        if (s?.contains(item))!{
            count2+=1
        }
    }
    if count2 > 0{

        label.text = "Second array"

    }

3 个答案:

答案 0 :(得分:1)

我不清楚你在问什么,但上面代码的一个问题是你没有在第一个循环后重置count1 - 所以如果第一个包含item,你将label.text设置为“Second数组“即使第二个数组不包含项目。

我假设count1在显示的代码之外声明,因为你没有在任何一个循环中将它声明为var。这意味着范围包括两个循环。

答案 1 :(得分:1)

我猜你错过了第二阵的第二个计数器,或者你最好尝试为这类任务找到另一个解决方案

var one = ["word1", "word2", "word3"]
var two = ["word4", "word5", "word6"]
var count1 = 0
var count2 = 0
let s = "word1"
var label = ""

for item in one{
   if (s.contains(item)) {
     count1+=1
   }
}
if count1 > 0{

   label = "First array"

}
for item in two{
   if (s.contains(item)) {
     count2+=1
   }
}
if count2 > 0{

  label = "Second array"

}

答案 2 :(得分:0)

自己找到解决方案。

var one = ["word1", "word2", "word3"]
var two = ["word4", "word5", "word6"]


let s = label.text?.lowercased()

for item in one{
    if (s?.contains(item))!{
        label.text = "first array"
    }
}

for item in two{
        if (s?.contains(item))!{
           label.text = "second array"
        }
    }