Ios 在可扩散数据源tableview上移动tableview单元格

Ios 在可扩散数据源tableview上移动tableview单元格,ios,swift,uitableview,ios13,Ios,Swift,Uitableview,Ios13,我使用拖放API来实现单元格移动。它在UITableViewDataSource下工作。但是使用新的UITableViewDiffableDataSource会在单元格下降到新位置时导致应用程序崩溃 一些代码示例: private func configureDataSource()->UITableViewDiffableDataSource{ 在中返回ItemTableViewDiffableDataSource(tableView:tableView){tableView,indexPat

我使用拖放API来实现单元格移动。它在
UITableViewDataSource
下工作。但是使用新的
UITableViewDiffableDataSource
会在单元格下降到新位置时导致应用程序崩溃

一些代码示例:

private func configureDataSource()->UITableViewDiffableDataSource{
在中返回ItemTableViewDiffableDataSource(tableView:tableView){tableView,indexPath,item->UITableViewCell
将cell=tableView.dequeueReusableCell(标识符:String(description:ItemTableViewCell.self),for:indexath)设为!ItemTableViewCell
ViewController.configure(单元格,带:项)
返回单元
}
}
//标记:-UITableViewDragDelegate
扩展视图控制器:UITableViewDragDelegate{
func tableView(tableView:UITableView,itemsForBeginning session:UIDragSession,在indexath:indexPath)->[UIDragItem]{
返回[UIDragItem(itemProvider:NSItemProvider())]
}
func tableView(u tableView:UITableView,DragPreviewParametersErrorwat indexPath:indexPath)->UIDragPreviewParameters{
let parameters=UIDragPreviewParameters()
parameters.backgroundColor=.clear
返回参数
}
}
//标记:-UITableViewDropDelegate
扩展视图控制器:UITableViewDropDelegate{
func tableView(uTableView:UITableView,DropSessionIDUpdate会话:UIDropSession,带DestinationIndepath DestinationIndepath:Indepath?->UITableViewDropProposal{
guard let dragSession=session.localDragSession-else{
返回UITableViewDropProposal(操作:。取消,意图:。未指定)
}
//在同一个应用程序中拖动
返回UITableViewDropProposal(操作:.move,意图:.InsertAttDestinationIndepath)
}
func tableView(tableView:UITableView,performDropWith coordinator:UITableViewDropCoordinator){
}
}
***由于未捕获的异常“nsInternalInconsistenceException”而终止应用程序,原因是:“当作为UITableView的数据源时,必须通过UITableView DiffableDataSource API更新UITableView:请不要直接在UITableView上调用变异API。”
***第一次抛出调用堆栈:
(0x1b0663278 0x1b038c0a4 0x1b05658a8 0x1b099b2dc 0x1B48057558 0x1b481c6f0 0x1b47df2c8 0x1b40f96d4 0x1b4112f2c 0x1b4118688 0x100a42c88 0x100a460ac 0x1b570f210 0x1B5700EEDC 0x1B5700F404 0x1b05e1090 0x1b05e0fe8 0x1b05e0780 0x1B05DB05DB8CC 0x1b05db16c 0x1ba405328 0x1B463F6C 0x10097044c 0x1009704664)
libc++abi.dylib:以NSException类型的未捕获异常终止

您确定没有从UITableViewDataSource设置任何数据源方法吗?我现在遇到了同样的问题!你知道怎么解决这个问题了吗?@fphelp仍然没有。我改用普通的数据源协议。我已经向苹果提交了这个问题。只是为了添加更多数据。我有一个类似的问题,但它似乎只发生在有iOS 13.1.3的testers设备上。如果我在自己的设备上测试iOS 13.7或14.3,我无法重现崩溃。这闻起来像是在13.1.3和13.7之间修复的操作系统错误。@Jon Steinmetz我相信苹果会通过iOS 14中新的Diffable数据源API来修复它。很高兴听到苹果修复了它。现在我只是不使用可编辑列表的API。
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView must be updated via the UITableViewDiffableDataSource APIs when acting as the UITableView's dataSource: please do not call mutation APIs directly on UITableView. <UITableView: 0x11a054200; frame = (0 0; 375 812); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x28016a880>; layer = <CALayer: 0x280f2e6c0>; contentOffset: {0, -88}; contentSize: {375, 495}; adjustedContentInset: {88, 0, 34, 0}; dataSource: <_TtGC12DNDOrderList31ItemTableViewDiffableDataSourceOCS_14ViewController7SectionCS_4Item_: 0x280d10a40>>'
*** First throw call stack:
(0x1b0663278 0x1b038c0a4 0x1b05658a8 0x1b099b2dc 0x1b4805758 0x1b481c6f0 0x1b47df2c8 0x1b40f96d4 0x1b4112f2c 0x1b4118688 0x100a42c88 0x100a460ac 0x1b570f210 0x1b570eedc 0x1b570f404 0x1b05e1090 0x1b05e0fe8 0x1b05e0780 0x1b05db8cc 0x1b05db16c 0x1ba405328 0x1b4643f6c 0x10097044c 0x1b0466424)
libc++abi.dylib: terminating with uncaught exception of type NSException