我有一个来自 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 实体中删除记录)但视图中的列表行未刷新。这里可能是什么问题?