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