删除所有条目
删除所有条目
我已经在谷歌和stackoverflow上搜索过,但是我找不到Swift4的解决方案。我正在尝试删除我核心数据数据库中的所有条目。
这是我的代码:
//重要的部分
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
let managedContext = appDelegate.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Day", in: managedContext)!
//我如何使用它(可能完全不必要,以防万一)
let fetchDay = NSFetchRequest
fetchDay.fetchLimit = 1
let currentDay = try! managedContext.fetch(fetchDay)
let today: Day = currentDay.first as! Day
print("日期:\(today.date!)")
print("完成:\(today.completed)")
不,我的问题不同。我会编辑以解释如何。
委托和上下文变量使用的函数在Swift4中不可用。
最近,你需要删除所有条目的问题出现了。这可能是因为数据表中的所有条目需要被清空。下面有三种方法可以解决这个问题。
第一种方法是使用Core Data的FetchRequest来删除所有条目。首先,你需要初始化FetchRequest,并指定要删除的实体名称。然后,将includesPropertyValues属性设置为false,以便在删除之前不加载属性值。接下来,使用managedObjectContext的executeFetchRequest方法执行FetchRequest,并将结果转换为NSManagedObject数组。然后,使用for循环遍历所有的NSManagedObject对象,并使用managedObjectContext的deleteObject方法来删除每个对象。最后,使用managedObjectContext的save方法保存更改。
第二种方法是使用Batch Delete Request来删除所有条目。首先,创建一个FetchRequest,并指定要删除的实体名称。然后,创建一个Batch Delete Request,并将FetchRequest传递给它。最后,使用managedObjectContext的executeRequest方法执行Batch Delete Request。
第三种方法是删除持久存储。首先,使用persistentStoreCoordinator的destroyPersistentStoreAtURL方法来删除持久存储。你需要指定存储的URL、存储的类型和选项。最后,使用错误处理来处理可能出现的错误。
你可以参考这个链接(https://cocoacasts.com/how-to-delete-every-record-of-a-core-data-entity)了解更多信息。