菜鸟教程小白 发表于 2022-12-12 23:15:14

ios - 当有 2 个部分时,从 CoreData 填充部分中的行数


                                            <p><p>在我的 CoreData 中,我有一个 Person 实体,每个 Person 可以有多个(到多个)Statement 实体。语句实体有一个名为 <code>amountOwed</code> 的属性,它是一个小数。现在我的想法是循环所有数量并将它们加起来,如果它们是正数,则将它们添加到正数组中,如果它们是负数,则将它们添加到该数组中。然后使用该数组来计算每个部分需要显示多少个单元格。 </p>

<p>我创建了一个 <code>fetchedResultsController</code> 并尝试将它用于 for 循环</p>

<pre><code>for i in 0..&lt;fetchedResultsController.fetchedObjects!.count {

      let person = fetchedResultsController.fetchedObjects?

      let amountTotal = person?.value(forKeyPath: &#34;[email protected]&#34;) as? Decimal

      if(amountTotal! &lt;= Decimal(0) )
      {
            postiveCellNumber += 1
            print(&#34;\(postiveCellNumber) postive number count&#34;)
      }
      else{
            negativeCellNumber += 1
            print(&#34;\(negativeCellNumber) negative number count&#34;)
      }

    }
</code></pre>

<p>然后,我尝试在 <code>numberOfRowsInSection</code> 函数中使用这些数组,如下所示:</p>

<pre><code>    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {

    switch(section) {
    case 0:
      return postiveCellNumber
    case 1:
      return negativeCellNumber

    default :return 0
    }
}
</code></pre>

<p>我认为我的 for 循环没有正确循环,因为我收到一个错误提示 <br/> </p>

<blockquote>
<p>no object at index 2 in section at index 0.</p>
</blockquote></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如何使用两个不同的查询,一个用于正值,一个用于负值,并带有两个不同的获取结果 Controller ?然后,您可以让 FRC 为您进行迭代和计数。</p>

<p>您将无法使用 FRC 管理部分。你必须自己做。为 <code>sectionNameKeyPath</code> 指定 <code>nil</code>。然后你想要类似的东西</p>

<pre><code>func numberOfSections(in tableView: UITableView) -&gt; Int {
    return 2
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
    if section == 0 {
      return positiveResultsController.fetchedObjects?.count ?? 0
    }
    else {
      return negativeResultsController.fetchedObjects?.count ?? 0
    }
}
</code></pre>

<p>或许</p>

<pre><code>func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
    if section == 0 {
      let sectionInfo = positiveResultsController.sections!
      return sectionInfo.numberOfObjects
    }
    else {
      let sectionInfo = negativeResultsController.sections!
      return sectionInfo.numberOfObjects
    }
}
</code></pre>

<p>与 <code>tableView(_:cellForRowAt:)</code> 的逻辑类似。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 当有 2 个部分时,从 CoreData 填充部分中的行数,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/41273826/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/41273826/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 当有 2 个部分时,从 CoreData 填充部分中的行数