gpt4 book ai didi

arrays - 使用 for 循环检查数组输入 - Swift

转载 作者:行者123 更新时间:2023-11-30 10:06:52 24 4
gpt4 key购买 nike

我正在尝试制作一个简单的应用程序,将我存储在一个数组中的英语单词翻译成存储在另一个数组中的西类牙语单词。为了实现这一目标,我有一个文本字段供用户输入英文单词,还有一个翻译按钮供用户按下以获得输出。但是,当按下按钮时,我在为输出制作的标签中没有得到任何输出。我相信我的 for 循环可能有问题,但我不确定,因为我是 swift 的新手。我试图通过查看 Swift 文档并搜索其他问题来回答我的问题。但是,我无法找到合适的答案。

import UIKit

//Translate a word from English to Spanish.
class ViewController: UIViewController, UITextFieldDelegate {

@IBOutlet weak var translatedWord: UILabel!

var transIndex: Int = 0

//Put English Words in an array
var englishWordsArray: [String] = ["phone", "dog", "sad", "happy", "crocodile"]

//Put Spanish words in an array
var spanishWordsArray: [String] = ["telefono", "perro", "triste", "feliz", "cocodrilo"]

//Close keyboard boolean
func textFieldShouldReturn(textField: UITextField) -> Bool {
self.englishWord.resignFirstResponder()
return true
}//end resignFirstResponder

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

//set delegate
self.englishWord.delegate = self
}// end viewDidLoad

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}//end didReceiveMemoryWarning

//TextField for englishWord
@IBOutlet weak var englishWord: UITextField!

//translateButton
@IBAction func translateButton(sender: AnyObject) {
var word = self.englishWord.text

//For Loop
for var transIndex = 0; transIndex < (englishWordsArray.count); transIndex++ {
if englishWordsArray[transIndex] == word.lowercaseString {
print("transIndex is \(transIndex)")
} else {
if englishWord.text.isEmpty {
print("Enter an English word")
} else {
if englishWord != transIndex {
print("No translation available")
}
}
}
}
}//end translateButton
}//end ViewController

最佳答案

你的循环肯定无法正常工作。您有3个案例:

  1. 文本为空
  2. 一个有效的词
  3. 无效单词

请注意,您不需要 for 循环来测试文本是否为空。当您找到该单词时,您还需要打破循环。 englishWord != transIndex 条件实际上完全无效(它将 UITextField 与数字进行比较)。

已修复(并且没有那些奇怪的注释):

var word = self.englishWord.text

if (word.isEmpty) {
print("Enter an English word")
return
}

for var transIndex = 0; transIndex < englishWordsArray.count; transIndex++ {
if englishWordsArray[transIndex] == word.lowercaseString {
print("transIndex is \(transIndex)")
return
}
}

print("No translation available")

但是,让我们改进它

let word = self.englishWord.text

if (word.isEmpty) {
print("Enter an English word")
return
}

for transIndex in englishWordsArray.indices {
if englishWordsArray[transIndex] == word.lowercaseString {
print("transIndex is \(transIndex)")
return
}
}

print("No translation available")

但是,我们仍然可以使用 indexOf 方法来替换所有这些

let word = self.englishWord.text

if (word.isEmpty) {
print("Enter an English word")
return
}

if let transIndex = englishWordsArray.indexOf(word.lowercaseString) {
print("transIndex is \(transIndex)")
} else {
print("No translation available")
}

关于arrays - 使用 for 循环检查数组输入 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35447919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com