如何在swift中删除coredata数据库中的特定行数据

如何在swift中删除coredata数据库中的特定行数据,swift,core-data,Swift,Core Data,请帮帮我 这是我的密码 // 我想从tableview中删除一整行,即标题、详细信息、类型等。我的实体名称是SavedData。我尝试了一些教程,但它们不能满足我的需要。当我们向右滑动时,会出现delete,但不会工作,因为我不知道代码。这样,您可以基于实体从coredata中删除数据:下面是从coredata中删除用户实体数据的简单函数:希望有帮助 //从核心数据中删除信息 func deleteUserInfo() { let context = appdelegate.m

请帮帮我

这是我的密码 //


我想从tableview中删除一整行,即标题、详细信息、类型等。我的实体名称是SavedData。我尝试了一些教程,但它们不能满足我的需要。当我们向右滑动时,会出现delete,但不会工作,因为我不知道代码。

这样,您可以基于实体从coredata中删除数据:下面是从coredata中删除用户实体数据的简单函数:希望有帮助 //从核心数据中删除信息

func deleteUserInfo()  {    
    let context = appdelegate.managedObjectContext
    let coord   = appdelegate.persistentStoreCoordinator

    let fetchRequest = NSFetchRequest(entityName: "entityname")
    //Here is the field on which u need to chk which record u want to delete just pass here in value ( acutal value) unique key = field in coredata 
    let predicate = NSPredicate(format: "uniqueKey == %@", "value")
    fetchRequest.predicate = predicate
    if #available(iOS 9.0, *) {
       //You can put condition to delete data accordingly
        let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)

        do {
            try coord.executeRequest(deleteRequest, withContext: context)
        }

        catch let error as NSError {
            //Error handling
        }

        catch {}

    } else {

        // Fallback on earlier versions
        do {

           let users: NSArray = try appdelegate.managedObjectContext.executeFetchRequest(fetchRequest)

        //You can put condition to delete data accordingly
        for user in users {
            appdelegate.managedObjectContext.delete(user)
        }

        try appdelegate.managedObjectContext.save()

        } catch let error as NSError {
            //Error handling
        }

        catch {}
    }
}

我希望这将有助于使用核心数据中的索引位置删除特定行

func tableView(_ tableView: UITableView, commit editingStyle: 

UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) 

{
    let appDelegate = UIApplication.shared.delegate as! AppDelegate

    let context = appDelegate.persistentContainer.viewContext

    let requestDel = NSFetchRequest<NSFetchRequestResult>(entityName: "Contacts")
    requestDel.returnsObjectsAsFaults = false

    do {

        let arrUsrObj = try context.fetch(requestDel)

        let objectUpdate = arrUsrObj as! [NSManagedObject]

            context.delete(objectUpdate[indexPath.row]) // Deleting Object

    } catch {
        print("Failed")
    }

    // Saving the Delete operation
    do {
        try context.save()
        print("deleted")
        fetch()


    } catch {
        print("Failed saving")
    }


}
func tableView(tableView:UITableView,commit editingStyle:
UITableViewCell.EditingStyle,forRowAt indexPath:indexPath)
{
让appDelegate=UIApplication.shared.delegate为!appDelegate
让上下文=appDelegate.persistentContainer.viewContext
let requestDel=NSFetchRequest(entityName:“联系人”)
requestDel.returnsObjectsAsFaults=false
做{
让arrUsrObj=try context.fetch(requestDel)
让objectUpdate=arrUsrObj as![NSManagedObject]
context.delete(objectUpdate[indexPath.row])//删除对象
}抓住{
打印(“失败”)
}
//保存删除操作
做{
尝试context.save()
打印(“已删除”)
fetch()
}抓住{
打印(“保存失败”)
}
}

您正在删除实体本身而不是特定的行,获取该特定行并执行删除操作并重新加载TableView检查此标记是否正确回答如果它解决了您的问题使用奇怪的代码执行此操作非常复杂(且效率低下)。首先,您必须搜索并获取
NSManagedObject
,因为您丢弃了引用,然后必须删除表示数据源的所有数组中行索引处的项,然后您必须删除核心数据中的
NSManagedObject
,最后在tableView中调用
deleteRowsAtIndexPaths
。我想从tableView中删除所选行,所以我将此代码放在-func tableView中(tableView:UITableView,CommittedItingStyle editingStyle:UITableViewCellEditingStyle,forRowAtIndexPath indexPath:NSIndexPath){}………当我像这样在用户上放置indexPath.row时,这一行显示了错误。.appDel.managedObjectContext.delete(用户(indexPath.row))chck参数u传递整数?我正在使用此代码在viewcontroller中显示我的数据-chck更新了答案,相应地更改了代码,在coredata中,您需要使用谓词获取结果,然后您可以根据需要删除传递值和字段
func tableView(_ tableView: UITableView, commit editingStyle: 

UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) 

{
    let appDelegate = UIApplication.shared.delegate as! AppDelegate

    let context = appDelegate.persistentContainer.viewContext

    let requestDel = NSFetchRequest<NSFetchRequestResult>(entityName: "Contacts")
    requestDel.returnsObjectsAsFaults = false

    do {

        let arrUsrObj = try context.fetch(requestDel)

        let objectUpdate = arrUsrObj as! [NSManagedObject]

            context.delete(objectUpdate[indexPath.row]) // Deleting Object

    } catch {
        print("Failed")
    }

    // Saving the Delete operation
    do {
        try context.save()
        print("deleted")
        fetch()


    } catch {
        print("Failed saving")
    }


}