快速删除过去保存的核心数据条目
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。你正在做:
我们可以看到,您没有保存任何内容,因此也没有保存已删除的状态。
【讨论】:
以上是关于快速删除过去保存的核心数据条目的主要内容,如果未能解决你的问题,请参考以下文章