Core data Swift 3删除已排序的表视图行并查找相应的coreData对象

Core data Swift 3删除已排序的表视图行并查找相应的coreData对象,core-data,Core Data,我相信这个问题有一个简单的解决办法,但到目前为止,我还没有找到它后,看了许多档案问题。我希望有人能帮忙,因为除了这个明显的问题,代码工作得很好 我有一个来自coreData的数据表,该表根据特定字段进行排序(不是唯一的)。我想通过向左滑动并点击delete,邀请用户删除单个表行。然后我想更新表并删除相应的coreData对象。问题在于,要删除的正确coreData对象不是表中已扫描行的index.row,因为表已排序,但coreData对象在输入时仍保持排序。我想添加一个coreData属性,它

我相信这个问题有一个简单的解决办法,但到目前为止,我还没有找到它后,看了许多档案问题。我希望有人能帮忙,因为除了这个明显的问题,代码工作得很好

我有一个来自coreData的数据表,该表根据特定字段进行排序(不是唯一的)。我想通过向左滑动并点击delete,邀请用户删除单个表行。然后我想更新表并删除相应的coreData对象。问题在于,要删除的正确coreData对象不是表中已扫描行的index.row,因为表已排序,但coreData对象在输入时仍保持排序。我想添加一个coreData属性,它是一个唯一的数字系列,可以用来从索引行中标识对象,但我想知道是否有更好的解决方案。我删除表行的代码如下所示

从表中删除数据行

    override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
            if editingStyle == .delete {

                let request: NSFetchRequest<Game> = NSFetchRequest(entityName: "Game")
                    if let entry = try? managedObjectContext.fetch(request) as [Game] {
                    managedObjectContext.delete(entry[indexPath.row])
                    print("coredata row deleted = ", indexPath.row)

                        do {
                            try managedObjectContext.save()
                            gameRefArray.remove(at: indexPath.row)
                            self.tableView.deleteRows(at: [indexPath], with: .automatic)
                        } catch let error as NSError {
                            print("Could not save. \(error), \(error.userInfo)")
                        }
                }
        }
重写func tableView(tableView:UITableView,commit editingStyle:UITableViewCellEditingStyle,forRowAt indexPath:indexPath){
如果editingStyle==.delete{
let请求:NSFetchRequest=NSFetchRequest(entityName:“游戏”)
如果let entry=try?managedObjectContext.fetch(request)as[Game]{
managedObjectContext.delete(条目[indexPath.row])
打印(“coredata行已删除=”,indexPath.row)
做{
请尝试managedObjectContext.save()
gameRefArray.remove(位于:indexPath.row)
self.tableView.deleteRows(位于:[indexPath],带:。自动)
}将let错误捕获为NSError{
打印(“无法保存.\(错误),\(错误.用户信息)”)
}
}
}

尝试使用NSFetchedResultsController获取对象,NSFetchedResultsController用于管理核心数据获取请求的结果并向用户显示数据。设置NSFetchedResultsController委托可设置并实现控制器中NSFetchedResultsController委托所需的方法


在这里,要删除对象,请从上下文中删除该对象。委托方法将处理要显示的用户数据。

谢谢。这无疑是我应该调查的领域,但对于我来说,这是一个新领域,我需要一些时间才能回来并给出反馈。