gpt4 book ai didi

swift - UITableView.insertRowsAtIndexPaths 不工作

转载 作者:行者123 更新时间:2023-11-28 11:04:23 24 4
gpt4 key购买 nike

我在使用 Core Data 时遇到了问题。应用程序崩溃,因为当我插入一个新元素时,我尝试访问一个不存在但它应该存在的单元格。

重要的代码:

func controllerWillChangeContent(controller: NSFetchedResultsController) {
tableView.beginUpdates()
}

func controllerDidChangeContent(controller: NSFetchedResultsController) {
tableView.endUpdates()
}

func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
switch type {
case .Insert:
if let indexPath = newIndexPath {
self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) // This doesn't work
print(indexPath) // Returns row 0 section 0
print(tableView.numberOfRowsInSection(0)) // Returns 0
print(tableView.cellForRowAtIndexPath(indexPath)) // Returns nil

let cell = tableView.cellForRowAtIndexPath(indexPath) as! myCell // App crashes here because cell is nil
configureCell(cell, atIndexPath: indexPath)

self.tableView.backgroundView = nil
}

崩溃日志:

<UITableView: 0x7ffb1b8c3000; frame = (0 64; 375 554); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x7ffb1ae9a620>; layer = <CALayer: 0x7ffb1ae92b40>; contentOffset: {0, 0}; contentSize: {375, 10}>
<NSIndexPath: 0xc000000000000016> {length = 2, path = 0 - 0}
0
nil
fatal error: unexpectedly found nil while unwrapping an Optional value

很抱歉将日志作为代码,但是 block 引用存在错误,不会显示完整的日志。

这很奇怪,因为它之前工作正常。我只是对代码做了一些更改(代码片段包括更改)但没有触及 insertRowsAtIndexPaths,现在它不起作用。

最佳答案

这很正常!实际上,UITableView 上的 cellForRowAtIndexPath返回表示表格单元格的对象,如果单元格不可见或 indexPath 超出范围,则返回 nil”。 (Source)。

因此,您无法访问此单元格,因为它对于 UITableView 尚不存在(您正在添加它!)。请将您的 configureCell 调用移动到您的数据源 tableView(_:cellForRowAt:)

关于swift - UITableView.insertRowsAtIndexPaths 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39116556/

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