我有一张桌子,桌子分为两个部分,分别用于上午和晚上的课程。我正在获取早班和晚班的数据,并将其附加到以下变量
var morClasses = [String]()
var eveClasses = [String]()
然后,我将它们显示如下,
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var partOfDay = 0
switch (segView.selectedSegmentIndex)
{
case 0:
partOfDay = morClasses.count
break
case 1:
partOfDay = eveClasses.count
break
default:break
}
return partOfDay
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell1 = tableView.dequeueReusableCell(withIdentifier: "tableViewCell") as! TableViewCell
let cell2 = tableView.dequeueReusableCell(withIdentifier: "tableViewCellEve") as! TableViewCellEve
switch (segView.selectedSegmentIndex)
{
case 0:
cell1.label?.text = morClasses[indexPath.row]
case 1:
cell2.label?.text = eveClasses[indexPath.row]
return cell2
default: break
}
return cell1
}
我正在使用FRC如下插入它们,
func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?) {
case NSFetchedResultsChangeType.insert:
var indexPathToInsert = IndexPath(row: newIndexPath!.row, section: 0)
let classDetailInsert = fetchedResultsController.object(at: indexPathToInsert) as! ClassDetail
let numbers = classDetailInsert.dayPart
let containsMor = numbers!.contains(where: { $0 == 0 })
let containsEve = numbers!.contains(where: { $0 == 1 })
var rowToInsert = 0
var rowToInsertEve = 0
if (containsMor == true)
{
//if-else condition because count is updating N-1 late
if (morClasses.count >= 1)
{
rowToInsert = morClasses.count
}
else
{
rowToInsert = 0
}
indexPathToInsert = IndexPath(row:rowToInsert, section: 0)
morClasses.insert(classDetailInsert.title!, at: indexPathToInsert.row)
}
if (containsEve == true)
{
if (eveClasses.count >= 1)
{
rowToInsertEve = eveClasses.count
}
else
{
rowToInsertEve = 0
}
indexPathToInsert = IndexPath(row:rowToInsertEve, section: 0)
eveClasses.insert(classDetailInsert.title!, at: indexPathToInsert.row)
}
self.tableView.insertRows(at: [indexPathToInsert], with: .fade)
只要我在一个网段中插入数据,一切都可以正常工作,但是如果我添加与另一网段有关的数据,则会出现以下错误。那就是我可以继续添加上午课程而没有任何错误,但是一旦添加了晚上课程,就会出现以下错误。
CoreData:故障:严重的应用程序错误。捕获到异常 在调用NSFetchedResultsController的过程中从 -controllerDidChangeContent :。无效的更新:部分0中的行数无效。现有部分中包含的行数 更新(1)之后必须等于 更新前的那部分(1),加上或减去行数 从该部分插入或删除(已插入1个,已删除0个),再加上 或减去移入或移出该部分的行数(移入0 进入,0移出)。与userInfo(空)
我不知道我在哪里搞砸,对此方向的任何帮助将不胜感激。