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

时间:2017-08-06 19:08:17

标签: ios swift database core-data

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)和所需时态(to tenseLabel.text)来测试用户的共轭。目标是让用户输入(到userInput.text)该动词的共轭形式并按下按钮(checkAnswer)来检查他们的答案。如果答案是正确的,将生成一个新的动词,等等。

我有一个名为verbDatabase的CoreData实体,其属性名为idinfinitiveindPreJeindPreTu

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

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

有没有办法让文本标​​签在附加随机属性名称而不是字符串指向该值后显示该值?

如果我以低效的方式处理我的数据,是否有更好的方法将我的数据存储到Core Data中,以便我能够更好地使用我想要做的事情来访问它?我仍然试图围绕核心数据结构。我还考虑将动词保存为单独的词典,将时态作为其键,将共轭形式作为其对应的值。

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

提前感谢您的帮助!

verbDatabase[0].indPreJe

1 个答案:

答案 0 :(得分:0)

  

有没有办法让文本标​​签在附加随机属性名称而不是字符串指向该值后显示该值?

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

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