整个数据从数据库中删除

时间:2015-12-11 19:20:26

标签: ios swift core-data swift2 ios9

我正在开发一个笔记应用程序,因为它的名称表明这个应用程序的功能很清楚

问题是当我按下垃圾按钮时,整个数据从数据库中删除,一旦按下按钮就会删除所有注释,它就像“全部删除”一样,只删除视图中的数据

我如何解决这个问题?

 @IBAction func moveToTrash(sender: AnyObject) {

let text = textView.text

if (text.isEmpty){

    let alertController = UIAlertController(title: "Warning !", message: "There's Nothing to Delete", preferredStyle: .Alert)


    let okayAction = UIAlertAction(title: "OK", style: .Default) { (action) in
        print(action)
    }
    alertController.addAction(okayAction)

    self.presentViewController(alertController, animated: false) {

    }


}else{

let managedObjectContext = (UIApplication.sharedApplication().delegate
    as! AppDelegate).managedObjectContext

let fetchRequest = NSFetchRequest()
fetchRequest.entity = NSEntityDescription.entityForName("Note", inManagedObjectContext: managedObjectContext)
fetchRequest.includesPropertyValues = false
do {
    if let results = try managedObjectContext.executeFetchRequest(fetchRequest) as? [NSManagedObject] {
        for result in results {
            managedObjectContext.deleteObject(result)
        }

        try managedObjectContext.save()
    }
} catch {
    print(error)
    return
}

self.navigationController?.popViewControllerAnimated(true)

}

}

请注意,我仍然是iOS开发中的新手

enter image description here

1 个答案:

答案 0 :(得分:0)

这样做是因为这是你的代码告诉它做的事情。这段代码:

let fetchRequest = NSFetchRequest()
fetchRequest.entity = NSEntityDescription.entityForName("Note",    inManagedObjectContext: managedObjectContext)
fetchRequest.includesPropertyValues = false
do {
    if let results = try managedObjectContext.executeFetchRequest(fetchRequest) as? [NSManagedObject] {
        for result in results {
            managedObjectContext.deleteObject(result)
        }

        try managedObjectContext.save()
    }
}

获取Note实体的每个实例,然后遍历它们,删除每个实例。然后它保存更改。噗!没有更多的笔记。

您的视图控制器可能具有引用当前显示的注释的属性。在您的屏幕截图中,它将是包含文本“note 2”的对象。您需要使用deleteObject删除该对象。您不需要执行提取,因为您已经拥有了所需的对象。