删除swift中核心数据的过去保存条目

时间:2016-02-10 13:50:05

标签: swift core-data

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

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

这是我的代码:

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")

    }

this is what i get in print statement

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

你应该:

  1. 删除对象。
  2. 存储上下文
  3. 然后对实体执行新的提取
  4. 打印实体的所有实例
  5. 你实际做的是不同的:

    1. 存储上下文(用于更改任何内容,但注意与您的问题相关)
    2. 获取实体
    3. 从CD上下文中删除对象
    4. 打印仍然在周围但仍与CD分离的对象。
    5. 至t。你在做: 我们可以看到,你没有保存任何东西,因此不能保存已删除的状态。