gpt4 book ai didi

ios - 返回实体中的随机属性(核心数据)

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:08:36 24 4
gpt4 key购买 nike

verbDatabase Table我使用的数据如下,也在上面的截图中:

+----+------------+------------+------------+
| id | infinitive | ind pre je | ind pre tu |
+----+------------+------------+------------+
| 1 | aimer | aime | aimes |
| 2 | aller | vais | vas |
| 3 | courir | cours | cours |
| 4 | servir | sers | sers |
| 5 | mourir | meurs | meurs |
| 6 | dormir | dors | dors |
| 7 | sentir | sens | sens |
| 8 | vêtir | vêts | vêts |
| 9 | fuir | fuis | fuis |
| 10 | tenir | tiens | tiens |
+----+------------+------------+------------+

我是编码新手,正在开发一款法语变位应用程序,该应用程序通过以不定式形式显示动词(对 verbLabel.text)和所需时态(对 tenseLabel.text)来测试用户的变位。目标是让用户输入(到 userInput.text)该动词的变位形式,然后按下按钮 (checkAnswer) 来检查他们的答案。如果答案正确,将生成一个新的动词等。

我有一个名为 verbDatabase 的 CoreData 实体,其属性名为 idinfinitiveindPreJe indPreTu.

我已经设法生成一个随机行(以显示一个随机动词),但我在生成一个随机属性(indPreJe 或 indPreTu)时遇到了问题。要生成随机属性,并且因为属性名称必须以小写字母开头,所以我不能使用与生成随机行相同的方法。

为了解决这个问题,我尝试创建一个包含属性名称的数组,然后生成一个随机数,然后将属性名称附加到在 tenseLabel.text 中显示的获取请求,但 tenseLabel.text 显示字符串 "verbDatabase[0].indPreJe" 而不是 verbDatabase[0].indPreJe 的值。

有什么方法可以让文本标签在附加了随机属性名称而不是字符串指向该值后显示该值?

如果我以低效的方式处理我的数据,是否有更好的方法将我的数据存储到 Core Data 中,使我能够更好地访问我正在尝试做的事情?我仍在努力思考核心数据结构。我还考虑过将动词保存为单独的词典,以时态为键,共轭形式为相应的值。

理想情况下,我希望能够让用户选择他们想要测试的时态,并对动词进行分类 - 规则形式、不规则形式、常用动词等。

在此先感谢您的帮助!

@IBOutlet weak var verbLabel: UILabel!
@IBOutlet weak var tenseLabel: UILabel!
@IBOutlet weak var userInput: UITextField!
@IBOutlet weak var textView: UITextView!
var currentRow: Int = 0
var countTenseColumns: Int = 2
var currentColumn: Int = 0
var columnNames = ["id","infinitive","indPreJe","indPreTu"]

@IBAction func checkAnswer(_ sender: Any) {

if userInput.text == verbDatabase[currentRow].indPreTu {
textView.text = "correct!"
viewWillLayoutSubviews()
userInput.text = nil
}

else {
textView.text = "the correct answer is \(verbDatabase[currentRow].indPreTu ?? "error")"

}
}

func randomNumberGeneratorRow() -> Int {
//generates random number from 1 to verbDatabase.count
return Int(arc4random_uniform(UInt32(verbDatabase.count)+1))
}

func randomNumberGeneratorColumn() -> Int {
//generates random number from 2 to number of columns with tenses
return Int(arc4random_uniform(UInt32(countTenseColumns)+2))
}

override func viewWillLayoutSubviews() {
currentRow = self.randomNumberGeneratorRow()
currentColumn = self.randomNumberGeneratorColumn()
var columnName = "verbDatabase[0].\(columnNames[currentColumn])"

verbLabel.text = verbDatabase[currentRow].infinitive
tenseLabel.text = columnName
}

最佳答案

Is there any way to get the text label to display the value after it has been appended with the random attribute name instead of the string points to that value?

是的,您可以使用 value(forKey:)(参见 the documentation here ):

var columnName = columnNames[currentColumn]
tenseLabel.text = verbDatabase[currentRow].value(forKey:columnName)

关于ios - 返回实体中的随机属性(核心数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45535609/

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