首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >输入场与阵列的比较

输入场与阵列的比较
EN

Stack Overflow用户
提问于 2019-07-01 09:33:07
回答 2查看 64关注 0票数 0

我正在做一个应用程序,用户可以在这个应用程序中猜出图像中的名称并检查它,我可以看到将图像的名称放在数组中,并且能够看到它,但我需要将输入字符串与数组进行比较。

我已经尝试使用if(inputfield == imagesi){ retun“更正”,否则,当我输入Apple时,回答是假的

代码语言:javascript
复制
let images: [String] =["apple","ball","cat","dog","elephant","frog","house","igloo","jar","kite","leaf","monkey","nose","orange","plane","queen","rope","sun","tub","goat"]
var i : Int = 1
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    guessInput.delegate = self
    imageView.image = UIImage(named: images[0])
}

@IBAction func nextButton(_ sender: UIButton) {// Able to show images
   if(i+1 > images.count){
       i = 0
    }
    imageView.image = UIImage(named: images[i])
    i += 1
    checkLabel.text = ""
    guessInput.text = ""
}
@IBAction func checkButton(_ sender: UIButton) {// Compare input with Array
    let tr = String(guessInput.text!)
    if(images[i] ==  tr){
        checkLabel.text = "Correct"
    }
    else{
        checkLabel.text = "false"
    }
}

}

当我输入的是苹果时,我被期望退出“正确”,但是当我按下检查按钮时,它显示为假。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-01 09:53:06

您可以compare字符串caseInsensitive,从字符串(String(guessInput.text!))创建字符串是多余的。

代码语言:javascript
复制
@IBAction func checkButton(_ sender: UIButton) {// Compare input with Array
    if images[i].compare(guessInput.text!, options: .caseInsensitive) == .orderedSame {
        checkLabel.text = "Correct"
    } else {
        checkLabel.text = "False"
    }
}

顺便说一句,编译器会抱怨表达式=["apple"中缺少空格,并且不注释编译器可以推断的类型。

代码语言:javascript
复制
let images = ["apple",...
var i = 0 // array indices start with 0

你可以代替

代码语言:javascript
复制
if(i+1 > images.count){
   i = 0
}
imageView.image = UIImage(named: images[i])
i += 1

使用

代码语言:javascript
复制
i = (i + 1) % images.count
imageView.image = UIImage(named: images[i])

%操作符扭曲索引

最后,这是Swift:没有if表达式的括号。

编辑:

使索引保持不变

票数 0
EN

Stack Overflow用户

发布于 2019-07-01 09:35:56

比较文本的lowercased()版本,即

代码语言:javascript
复制
if(images[i] == tr.lowercased()){
    checkLabel.text = "Correct"
}
else {
    checkLabel.text = "false"
}

你可以把它缩短到,

代码语言:javascript
复制
checkLabel.text = (images[i] == tr.lowercased()) ? "Correct" : "false"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56833217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档