删除核心数据元素



我正在尝试实现一项功能来删除一副自定义闪存卡中的闪存卡,但是在CoreData方面遇到了问题。这应该做的是遍历保存的卡片,如果它与要删除的所需卡片匹配,那么我们将从当前卡组中删除它并保存上下文,有人知道出了什么问题吗?使用断点我可以确认 if 语句确实执行,因此它内部具有

逻辑
do {
self.fetchedCards = try context.fetch(Cards.fetchRequest())
for card in self.fetchedCards {
if(self.termLabel.text == card.term){
self.managedDeck?.removeFromCards(card)
ad.saveContext()
break
}
}
} catch {
}

请使用此功能从核心数据中删除所有数据

func deleteAllData(entity: String) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: entity)
fetchRequest.returnsObjectsAsFaults = false
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
for managedObject in results
{
let managedObjectData:NSManagedObject = managedObject as! NSManagedObject
managedContext.deleteObject(managedObjectData)
print("Deleted")
}
} catch let error as NSError {
print(error)
}
}

用于删除您可以使用此功能的所有数据

func deleteAllData(entity: String) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: entity)
fetchRequest.returnsObjectsAsFaults = false
do
{
let results = try managedContext.executeFetchRequest(fetchRequest)
for managedObject in results
{
let managedObjectData:NSManagedObject = managedObject as! NSManagedObject
managedContext.deleteObject(managedObjectData)
print("Deleted")
}
} catch let error as NSError {
print(error)
}
}

用法:

deleteAllData(entity: "your Entity name")
var cards = try! context.fetch(Cards.fetchRequest())
for card in cards {
if (self.termLabel.text == card.term) {
context.delete(card)
}
}
try! context.save()

if语句中,我需要context.delete(card)而不是self.managedDeck?.removeFromCards(card)

最新更新