当前位置: 首页 > 面试题库 >

iOS:删除所有核心数据Swift

姜卜霸
2023-03-14
问题内容

对于如何迅速删除所有核心数据,我有些困惑。我创建了一个带有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值,而且还需要遍历所有似乎与上下文无关的值。


问题答案:

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

@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



 类似资料:
  • 问题内容: 不幸的是,新的Core Data语义使我发疯。我之前的问题有一个干净的代码,因为头文件的自动生成不正确,因此无法正常工作。现在,我继续删除对象的工作。我的代码似乎很简单: 我用代替进行了“硬”调试,它向我展示了正确的对象。所以我只需要删除它。 PS没有。现在NSManagedContext只有 问题答案: 在您的情况下,提取的结果是托管对象 的 数组,因此您可以枚举该数组并删除所有匹配

  • 问题内容: 我知道SwiftUI使用状态驱动的渲染。所以我以为,当我删除核心数据实体条目时,带有核心数据元素的列表会立即刷新。我使用以下代码,成功清除了我的实体: 要使我的视图中的列表视觉上是空的,我必须事后离开视图(例如,使用“ self.presentationMode.wrappedValue.dismiss()”)并再次打开它。好像这些值仍存储在内存中的某个地方。当然这不是用户友好的,我敢

  • 为了更新核心数据中的数据(当核心数据中已经有数据时),我删除了所有数据,然后重新插入数据。但我不知道为什么会发生合并冲突。我对核心数据还不熟悉,所以我也搞不清楚它到底出了什么问题。我想我需要更改我的deleteAll函数,但我不知道该更改什么。 代码如下。 我可以使用saveContext来保存核心数据,但我也需要更改位置,并且在重新启动后它不起作用。重新启动后,元素的顺序就像我第一次设置的一样。

  • 我有一个使用ef核心代码优先方法构建的项目的审计机制。我已经在“OnModelCreating”函数中为一些表设置了“deleteBhavior”属性以级联。当我删除一个实体时,另一个实体会通过级联删除行为自动删除。现在一切都很好,我需要获取所有已删除的实体,但我不能。ChangeTracker不包含级联删除的实体。如何获取级联删除的值?有没有办法做到这一点?

  • 问题内容: 我有一组服务器,每个服务器都装有一堆可以压缩的文件。服务器均具有不同数量的核心。如何编写bash脚本为每个核心启动gzip,并确保gzip没有压缩相同的文件? 问题答案: 如果您使用的是Linux,则可以使用GNU的xargs启动与内核一样多的进程。 find -print0 / xargs -0保护文件名中的空格 xargs -n 1表示每个文件一个gzip进程 xargs -P指定

  • 我目前对EF Core有一些问题。我有一些需要删除的数据,我正在努力查看流畅的API是如何工作的,正是关于函数。 考虑到微软自己网站的经典博客/帖子场景,我想知道到底是什么实体,OnDelete()是“目标”(因为没有更好的词),在某些情况下,它似乎是博客,在另一些情况下,是帖子。是否可以从两侧定义级联删除(即当父博客被删除时,帖子被删除),如果是这样,我认为代码应该如下所示: <代码>模型。实体