gpt4 book ai didi

ios - -[UITableView _endCellAnimationsWithContext :] when converting Objective-C to Swift 中的断言失败

转载 作者:行者123 更新时间:2023-11-29 00:47:40 24 4
gpt4 key购买 nike

我在转换为 Swift 的一些代码时遇到了一个大问题。调用 self.tableView.endUpdates() 时,我的 TableView 保持为空,并且出现以下错误:

Assertion failure in -[UITableView _endCellAnimationsWithContext:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.60.7/UITableView.m:1501

奇怪的是,当用 Objective-C 编写相同的代码时,这个错误并没有出现。

TableView 数据源和委托(delegate)仍在 Objective-C 中,并被项目中的许多其他 View Controller 使用。

这是 Objective-c 中的代码:

self.dataSource.itemArray = [self.userList copy];
NSMutableArray *indexPaths = [NSMutableArray new];

for (NSUInteger i = (offset); i < (end); i++) {
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
[indexPaths addObject:indexPath];
}

[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:[indexPaths copy]
withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];

这是相同的代码,但很快:

self.dataSource.itemArray = self.userList.copy() as! [User]
var indexPaths = [NSIndexPath]()
for i in offset...end {
let indexPath = NSIndexPath(forRow: i, inSection: 0)
indexPaths.append(indexPath)
}
self.tableView.beginUpdates()
self.tableView.insertRowsAtIndexPaths(indexPaths, withRowAnimation: .Fade)
self.tableView.endUpdates()

tableView:numberOfRowsInSection: 被正确调用并在两种情况下返回相同的结果。单元格也已正确注册。

是否存在已知问题,或者我无法在 Swift 中扩展 Objective-C 基类。

最佳答案

在这段代码中:

for i in offset...end {
let indexPath = NSIndexPath(forRow: i, inSection: 0)
indexPaths.append(indexPath)
}

将添加的最后一个 indexPathNSIndexPath(forRow: end, inSection: 0),这意味着您要向 TableView 中添加一个额外的行,这预计不会。

可能您想将循环更改为:

for i in offset..<end {
let indexPath = NSIndexPath(forRow: i, inSection: 0)
indexPaths.append(indexPath)
}

关于ios - -[UITableView _endCellAnimationsWithContext :] when converting Objective-C to Swift 中的断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38453691/

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