菜鸟教程小白 发表于 2022-12-11 18:27:12

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


                                            <p><p> <a href="/image/kIHsi.png" rel="noreferrer noopener nofollow">verbDatabase Table</a>
我正在使用的数据如下以及上面的屏幕截图中:</p>

<pre><code>+----+------------+------------+------------+
| 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      |
+----+------------+------------+------------+
</code></pre>

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

<p>我有一个名为 <code>verbDatabase</code> 的 CoreData 实体,其属性名为 <code>id</code>、<code>infinitive</code>、<code>indPreJe</code> 和 <code> indPreTu</code>。 </p>

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

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

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

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

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

<p>提前感谢您的帮助!</p>

<pre><code>@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 = [&#34;id&#34;,&#34;infinitive&#34;,&#34;indPreJe&#34;,&#34;indPreTu&#34;]

@IBAction func checkAnswer(_ sender: Any) {

    if userInput.text == verbDatabase.indPreTu {
      textView.text = &#34;correct!&#34;
      viewWillLayoutSubviews()
      userInput.text = nil
    }

    else {
   textView.text = &#34;the correct answer is \(verbDatabase.indPreTu ?? &#34;error&#34;)&#34;

    }
}

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

func randomNumberGeneratorColumn() -&gt; 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 = &#34;verbDatabase.\(columnNames)&#34;

    verbLabel.text = verbDatabase.infinitive
    tenseLabel.text = columnName   
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><blockquote>
<p>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?</p>
</blockquote>

<p>是的,您可以使用 <code>value(forKey:)</code>(参见 <a href="https://developer.apple.com/documentation/objectivec/nsobject/1412591-value" rel="noreferrer noopener nofollow">the documentation here</a>):</p>

<pre><code>var columnName = columnNames
tenseLabel.text = verbDatabase.value(forKey:columnName)
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 返回实体中的随机属性(核心数据),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/45535609/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/45535609/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 返回实体中的随机属性(核心数据)