快速删除过去保存的核心数据条目

Posted

技术标签:

【中文标题】快速删除过去保存的核心数据条目【英文标题】:delete past save entries of core data in swift 【发布时间】:2016-02-10 13:50:05 【问题描述】:

我有一个问题,我无法完全删除存储在核心数据实体中的数据。我将用户名和密码存储在登录系统中。

我知道使用 .deleteObject() 方法,但老实说,我不确定这是否真的有效,因为我执行打印语句来检查控制台中存储的内容,并且它似乎没有被删除

这是我的代码:

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let context: NSManagedObjectContext = appDelegate.managedObjectContext

    //add user to core data

    let user = NSEntityDescription.insertNewObjectForEntityForName("User", inManagedObjectContext: context)

    do

    try context.save()

    catch

    print("there was an error saving to core data")

    

    do

        let request = NSFetchRequest(entityName: "User")
        let results = try context.executeFetchRequest(request)

        if results.count > 0
            for item in results as! [NSManagedObject]

                let username = item.valueForKey("username")
                let password = item.valueForKey("password")

                context.deleteObject(item)

                print("aawawaw \(username), \(password)")

            

        

    catch

        print("there was an error")

    

【问题讨论】:

如果将item的属性存储在常量中,然后删除item,常量仍然有它们的值。这绝不表示删除成功。 我知道这一点,但是如果您查看我的图片,则不会从过去的条目中删除任何内容 只是说测试成功会帮助你更快的找到问题的原因。无论如何,删除后保存上下文。 【参考方案1】:

您正在打印存储在 let 常量中的值。 尝试在for循环中实现

            context.deleteObject(item)
            let username = item.valueForKey("username")
            let password = item.valueForKey("password")
            print("aawawaw \(username), \(password)")

【讨论】:

【参考方案2】:

您并没有真正从 CD 中删除对象。

你应该:

    删除对象。 存储上下文 然后对实体执行新的提取 打印实体的所有实例

你实际做的是不同的:

    存储上下文(随其变化,但注意与您的问题相关) 获取实体 从 CD 上下文中删除对象 打印虽然已从 CD 中分离但仍然存在的对象。 至于 t。你正在做: 我们可以看到,您没有保存任何内容,因此也没有保存已删除的状态。

【讨论】:

以上是关于快速删除过去保存的核心数据条目的主要内容,如果未能解决你的问题,请参考以下文章

CoreData 删除单个对象

将 TextField 条目从模态视图控制器保存到核心数据单独的实体

Core Data 删除最后一个条目

只保存最后一项,同时快速保存核心数据[重复]

保存和加载数据(iphone sdk)

新的数据条目会覆盖列中所有过去的条目,我该如何更正?