Ios 如何解决数组排序时节数无效的问题

Ios 如何解决数组排序时节数无效的问题,ios,arrays,swift,xcode,sorting,Ios,Arrays,Swift,Xcode,Sorting,我正在尝试按日期对数组进行排序。该方法工作正常,直到我添加了此方法self.TableView.insertSections(IndexSet(arrayindex),带有:UITableView.RowAnimation.automatic) 我得到了nsinternalinconsistenceexceptionerr,我的numberOfSections返回1,我只有一个节 这是编译器的消息 reason: 'Invalid update: invalid number of sectio

我正在尝试按日期对数组进行排序。该方法工作正常,直到我添加了此方法
self.TableView.insertSections(IndexSet(arrayindex),带有:UITableView.RowAnimation.automatic)
我得到了
nsinternalinconsistenceexception
err,我的
numberOfSections返回1
,我只有一个节

这是编译器的消息

reason: 'Invalid update: invalid number of sections. The number of sections contained in the table view after the update (1) must be equal to the number of sections contained in the table view before the update (1), plus or minus the number of sections inserted or deleted (1 inserted, 0 deleted).'
我的代码

var driverofers=[driverOrdersData](){
迪塞特{
driverofers=driverofers.sorted(by:Bool{
返回左侧日期<右侧日期
}
静态函数==(lhs:DriverRordersData,rhs:DriverRordersData)->Bool{
返回lhs.date==rhs.date
}
}

执行第一个insert方法后,数据源中的实际行数比UI上的行数多一行,这是不相等的。导致崩溃。 在BeginUpdate方法和EndUpdate方法之间集成插入或删除操作,以仅执行一次UI更新。 试着这样做:


self.driverderstv.beginUpdate()
//我的问题是应用程序开始崩溃的地方
让arrayindex=[self.driverofers.firstIndex(of:offer)??0]
self.DriverOrdersTV.insertSections(IndexSet(arrayindex),带有:UITableView.RowAnimation.automatic)
self.driverderstv.endUpdates()文件

您可以看到的更多信息删除一行后,我也面临同样的问题,如何检测表视图行的删除
self.driverderstv.beginUpdates()self.driverderstv.insertRows(位于:[IndexPath.init(行:0,节:0)],带:.automatic)self.DriverOrdersTV.endUpdates()
这一个实际上很有效,感谢您在
beginUpdates()和endUpdates()上指出这一点
var DriverOffers = [driverOrdersData]() {
        didSet {
            DriverOffers = DriverOffers.sorted(by: <)
        }
    }

func sort() {

let offer = driverOrdersData(userUid: userid, name: name, phone: phone, amount: price, time: time, marketName: marketName, storeImg: img, userImg: userImg, date: date, orderDetails: order, orderLocation: orderLoc, userLocation: userlocation, distance1: self.distance1!, distance2: self.distance2! )

self.DriverOffers.append(offer)
self.DriverOrdersTV.reloadData()

//my problem is here where the app start to crash
let arrayindex = [self.DriverOffers.firstIndex(of: offer) ?? 0]                                   
self.DriverOrdersTV.insertSections(IndexSet(arrayindex), with: UITableView.RowAnimation.automatic)
}

extension driverOrdersData: Comparable{
    static func < (lhs: driverOrdersData, rhs: driverOrdersData) -> Bool {
        return lhs.date < rhs.date
    }
    
    static func == (lhs: driverOrdersData, rhs: driverOrdersData) -> Bool {
        return lhs.date == rhs.date
    }
    
}