【发布时间】:2021-08-29 17:39:58
【问题描述】:
我有一个包含 CoreData 实体记录列表的视图,并且在视图中声明了以下 FetchRequest
@FetchRequest(entity: Locations.entity(), sortDescriptors: [NSSortDescriptor(key: "locTimestamp", ascending: false)])
var locations: FetchedResults<Locations>
我有两个删除功能,一个是只删除给定 ID 的一条记录
func deleteLocation(forID id: UUID) {
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Locations")
request.predicate = NSPredicate(format: "locID == %@", id as CVarArg)
do {
let location = try myContext.fetch(request) as! [NSManagedObject]
myContext.delete(location.first!)
try myContext.save()
} catch let error {
errTitle = "Error"
errMessage = error.localizedDescription
isError = true
}
}
效果很好,因此在视图中包含记录的列表被刷新,第二个用于删除所有记录
func deleteAllLocations() {
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Locations")
let deleteRequest = NSBatchDeleteRequest(fetchRequest: request)
do {
try myContext.execute(deleteRequest)
try myContext.save()
} catch let error {
errTitle = "Error"
errMessage = error.localizedDescription
isError = true
}
}
执行(从 CoreData 实体中删除记录)但视图中的列表行未刷新。这可能是什么问题?
【问题讨论】:
标签: core-data swiftui nsbatchdeleterequest