gpt4 book ai didi

ios - NSInvalidArgumentException,原因 : no object at index in section at index. UICollectionViewController 和 NSFetchedResultsController

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:54:27 28 4
gpt4 key购买 nike

尝试在我的 UICollecitonView 末尾添加一个“Add New”按钮。使用 CoreData

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CollectionCell
configureCell(cell: cell, indexPath: indexPath)

var numberOfItems = self.collectionView(self.collectionView, numberOfItemsInSection: 0)

if (indexPath.row == numberOfItems - 1) {
var addCellButton = UIButton(frame: cell.frame)
addCellButton.setTitle("Add", for: UIControlState.normal)

cell.addSubview(addCellButton)
}
return cell
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

if let sections = controller.sections {
let sectionInfo = sections[section]
return sectionInfo.numberOfObjects + 1
}
return 0
}

Error: 'NSInvalidArgumentException', reason: 'no object at index 3 in section at index 0'

我需要检查 NSFetchedResultsController 的边界吗?如此处所提议:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'no object at index 3 in section at index 0'

最佳答案

您告诉 UICollectionView 您在该部分中有一项比存储在 NSFetchedResultsController 中的项目多。

我相信当您尝试从 configureCell 方法访问 NSFetchedResultsController.object(at: IndexPath) 时会抛出异常,您说的那个“额外”项目是那里。

如果您希望添加新按钮出现在与所有其他单元格相同类型的单元格中,您应该停止在 collectionView(numberOfItemsInSection:)

中添加额外的项目

或者,您可以创建一个不同类型的单元格放在最后,只需单击“添加新”按钮,并在单元格出列之前移动 if 语句。如果您要填充最后一项,则可以使用按钮使“AddNew”单元格标识符出列。否则,您将“Cell”标识符出列并将其配置为显示来自 NSFetchedResultsController 的数据。

关于ios - NSInvalidArgumentException,原因 : no object at index in section at index. UICollectionViewController 和 NSFetchedResultsController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41628531/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com