一尘不染

iOS:删除所有核心数据Swift

swift

对于如何迅速删除所有核心数据,我有些困惑。我创建了一个带有IBAction链接的按钮。单击按钮后,我将看到以下内容:

let appDel: foodforteethAppDelegate = UIApplication.sharedApplication().delegate as foodforteethAppDelegate
    let context: NSManagedObjectContext = appDel.managedObjectContext

然后,我想出了各种方法来尝试删除所有核心数据内容,但似乎无法正常工作。我已经使用removeAll从存储的数组中删除,但是仍然不能从核心数据中删除。我假设我需要某种类型的for循环,但是不确定如何从请求中进行。

我尝试应用删除单行的基本原理

func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) {

    let appDel: foodforteethAppDelegate = UIApplication.sharedApplication().delegate as foodforteethAppDelegate
    let context:NSManagedObjectContext = appDel.managedObjectContext

    if editingStyle == UITableViewCellEditingStyle.Delete {

        if let tv = tblTasks {
            context.deleteObject(myList[indexPath!.row] as NSManagedObject)
            myList.removeAtIndex(indexPath!.row)
            tv.deleteRowsAtIndexPaths([indexPath!], withRowAnimation: UITableViewRowAnimation.Fade)
        }

        var error: NSError? = nil
        if !context.save(&error) {
            abort()
        }

    }

}

但是,这样做的问题是,当我单击按钮时,我没有indexPath值,而且还需要遍历所有似乎与上下文无关的值。


阅读 224

收藏
2020-07-07

共1个答案

一尘不染

我已经使用以下方法使其工作:

@IBAction func btnDelTask_Click(sender: UIButton){

    let appDel: foodforteethAppDelegate = UIApplication.sharedApplication().delegate as foodforteethAppDelegate
    let context: NSManagedObjectContext = appDel.managedObjectContext  
    let request = NSFetchRequest(entityName: "Food")

    myList = context.executeFetchRequest(request, error: nil)


    if let tv = tblTasks {

        var bas: NSManagedObject!

        for bas: AnyObject in myList
        {
           context.deleteObject(bas as NSManagedObject)
        }

        myList.removeAll(keepCapacity: false)

        tv.reloadData()
        context.save(nil)
    }
}

但是,我不确定这是否是执行此操作的最佳方法。我还收到一个“常数”推断为“有任何物体”的错误-因此,如果对此有任何解决方案,那就太好了

编辑

通过更改为bas进行修复:AnyObject

2020-07-07