【问题标题】:errors while trying to compare a string to element in array尝试将字符串与数组中的元素进行比较时出错
【发布时间】:2014-11-13 01:49:09
【问题描述】:
    let verbList: [String] = ["hacer", "ser", "estar"]
let POVList: [String] = ["él / usted","ella / usted","ellas / ustedes","ellos / ustedes","tú","yo","nosotros",]
let correctConjugation: [[String]] = [["hace","hace","hacen","hacen","haces","hago","hacemos"], ["es","es","son","son","eres","soy","somos"], ["está","está","estan","estan","estas","estoy","estamos"]]


func randomVerb() -> Int {                          //creates and returns a random number for the prefix arrray
    var randomVerb = Int(arc4random_uniform(3))
    return randomVerb
}

func randomPrefix() -> Int {                        //creates and returns a random number for the verb array
    var randomPrefix = Int(arc4random_uniform(7))
    return randomPrefix
}


@IBAction func changeVerb(sender: AnyObject) {

    Verb.text = verbList[randomVerb()]
    POV.text = POVList[randomPrefix()]

    userResponse.backgroundColor = UIColor.whiteColor()
    userResponse.text = ""


}


@IBAction func checkResponse(sender: AnyObject) {

    var userResponseA: String
    userResponseA = userResponse.text
    if (userResponseA == correctConjugation[randomVerb()[randomPrefix()]]){
        userResponse.backgroundColor = UIColor.greenColor()
    } else {
        userResponse.backgroundColor = UIColor.redColor()
    }

}

所以我在这里遇到两个错误(在 checkResponse 的 if 语句中):首先,“int 没有名为 'subscript' 的成员”,如果我只是在 if 语句中取出函数调用,我得到: "'String' 不能转换为 'Mirror Disposition'"

我真的不知道为什么这不起作用。请耐心等待,因为我是一个 Xcode 菜鸟,只是想在西班牙语中获得更好的成绩。

【问题讨论】:

  • 这与您遇到的问题无关,而是您设置的方式显示了一个随机对,然后针对checkResponse() 中新生成的随机对进行测试。
  • 哦,该死,换句话说,这行不通...我可以在随机生成器函数中创建一个变量来存储随机数并返回该变量以检查响应吗?
  • 只需在列表中添加两个变量,然后从changeVerb() 设置它们。我将在下面添加我的答案...
  • 在实例级别具有变量可以让您从所有不同的功能访问它们 - 请参阅下面的更新。

标签: xcode swift


【解决方案1】:

非常接近 - 只需将您的下标分开:

if (userResponseA == correctConjugation[randomVerb()][randomPrefix()]) {
    // ...
}

在使用数组数组时(在本例中为 correctConjugation),每个下标都会将您降低一层。


对于另一个问题,您需要几个变量来保存当前动词和前缀索引:

class VC: UIViewController {
    // list declarations here
    var verbIndex = 0
    var povIndex = 0

    @IBAction func changeVerb(sender: AnyObject) {
        verbIndex = randomVerb()
        povIndex = randomPrefix()

        Verb.text = verbList[verbIndex]
        POV.text = POVList[povIndex]

        userResponse.backgroundColor = UIColor.whiteColor()
        userResponse.text = ""
    }

    @IBAction func checkResponse(sender: AnyObject) {
        var userResponseA = userResponse.text

        if (userResponseA == correctConjugation[verbIndex][povIndex]){
            userResponse.backgroundColor = UIColor.greenColor()
        } else {
            userResponse.backgroundColor = UIColor.redColor()
        }
    }
}

【讨论】:

  • 解决了这个问题 - 我不知道每个下标都会带你进入下一个梦想。谢谢
  • hmm 所以我想我在关注你,我们正在存储随机值以使用它们来检查用户响应(这完全有意义)但程序仍然无法识别 userResponseA = correctConjugation .我可以引用数组的错误部分吗?因此例如如果生成了“el”和“ser”,那么正确的共轭应该引用“es”
  • 等一下,我打错了:0...谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-22
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
相关资源
最近更新 更多