在我的 CoreData 中,我有一个 Person 实体,每个 Person 可以有多个(到多个)Statement 实体。语句实体有一个名为 amountOwed 的属性,它是一个小数。现在我的想法是循环所有数量并将它们加起来,如果它们是正数,则将它们添加到正数组中,如果它们是负数,则将它们添加到该数组中。然后使用该数组来计算每个部分需要显示多少个单元格。
我创建了一个 fetchedResultsController 并尝试将它用于 for 循环
for i in 0..<fetchedResultsController.fetchedObjects!.count {
let person = fetchedResultsController.fetchedObjects?[i]
let amountTotal = person?.value(forKeyPath: "[email protected]") as? Decimal
if(amountTotal! <= Decimal(0) )
{
postiveCellNumber += 1
print("\(postiveCellNumber) postive number count")
}
else{
negativeCellNumber += 1
print("\(negativeCellNumber) negative number count")
}
}
然后,我尝试在 numberOfRowsInSection 函数中使用这些数组,如下所示:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch(section) {
case 0:
return postiveCellNumber
case 1:
return negativeCellNumber
default :return 0
}
}
我认为我的 for 循环没有正确循环,因为我收到一个错误提示
no object at index 2 in section at index 0.
Best Answer-推荐答案 strong>
如何使用两个不同的查询,一个用于正值,一个用于负值,并带有两个不同的获取结果 Controller ?然后,您可以让 FRC 为您进行迭代和计数。
您将无法使用 FRC 管理部分。你必须自己做。为 sectionNameKeyPath 指定 nil 。然后你想要类似的东西
func numberOfSections(in tableView: UITableView) -> Int {
return 2
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return positiveResultsController.fetchedObjects?.count ?? 0
}
else {
return negativeResultsController.fetchedObjects?.count ?? 0
}
}
或许
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
let sectionInfo = positiveResultsController.sections![section]
return sectionInfo.numberOfObjects
}
else {
let sectionInfo = negativeResultsController.sections![section]
return sectionInfo.numberOfObjects
}
}
与 tableView(_:cellForRowAt 的逻辑类似。
关于ios - 当有 2 个部分时,从 CoreData 填充部分中的行数,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/41273826/
|