我正在开发一个笔记应用程序,因为它的名称表明这个应用程序的功能很清楚
问题是当我按下垃圾按钮时,整个数据从数据库中删除,一旦按下按钮就会删除所有注释,它就像“全部删除”一样,只删除视图中的数据
我如何解决这个问题?
@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开发中的新手
答案 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
删除该对象。您不需要执行提取,因为您已经拥有了所需的对象。