gpt4 book ai didi

ios - 在 TableView 或 Collection View 中删除与 IndexPath 关联的 CKRecord 的可靠方法是什么?

转载 作者:行者123 更新时间:2023-11-29 01:02:32 25 4
gpt4 key购买 nike

基本上是为了删除“离线”单元格,我使用这种方法,以便无论何时从右向左滑动,用户都可以删除 tableview 单元格。

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if (editingStyle == .delete) {
self.polls.remove(at: indexPath.row)
}
}

但是,显然不会影响我之前创建的单元格内容的CKRecord。那么我如何才能在用户滑动删除的确切行中获取和删除 CKRecord 数据?

最佳答案

假设 polls 是声明为 [CKRecord] 的数据源数组,您必须做三件事。

  1. 从给定索引处的数据源数组中获取记录,并将其从相应的 CKDatabase 中删除。
  2. 从数据源数组中删除记录(您已经这样做了)。
  3. 调用 deleteRowsAtIndexPaths 传递 [indexPath] 删除 TableView 中的行。

例如(publicDatabase 是实际的 CKDatabase 实例):

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
let record = polls[indexPath.row]
publicDatabase.deleteRecordWithID(record.recordID, completionHandler: ({returnRecord, error in
// do error handling
})
polls.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
}

编辑:

为了正确处理错误,您可能必须将第二步和第三步的代码放入完成 block 中。

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
let record = polls[indexPath.row]
publicDatabase.deleteRecordWithID(record.recordID, completionHandler: ({returnRecord, error in
if error != nil {
// do error handling
} else {
self.polls.removeAtIndex(indexPath.row)
dispatch_async(dispatch_get_main_queue()) {
self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
}
})
}
}

关于ios - 在 TableView 或 Collection View 中删除与 IndexPath 关联的 CKRecord 的可靠方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36844342/

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