Page MenuHomeMusing Studio

NSManagedObjectContext+ExecuteAndMergeChanges.swift
No OneTemporary

NSManagedObjectContext+ExecuteAndMergeChanges.swift

import CoreData
extension NSManagedObjectContext {
/// Executes the given `NSBatchDeleteRequest` and directly merges the changes to bring the given
/// managed object context up to date.
///
/// Credit: https://www.avanderlee.com/swift/nsbatchdeleterequest-core-data/
///
/// - Parameter batchDeleteRequest: The `NSBatchDeleteRequest` to execute.
/// - Throws: An error if anything went wrong executing the batch deletion.
public func executeAndMergeChanges(using batchDeleteRequest: NSBatchDeleteRequest) throws {
batchDeleteRequest.resultType = .resultTypeObjectIDs
let result = try execute(batchDeleteRequest) as? NSBatchDeleteResult
let changes: [AnyHashable: Any] = [NSDeletedObjectsKey: result?.result as? [NSManagedObjectID] ?? []]
NSManagedObjectContext.mergeChanges(fromRemoteContextSave: changes, into: [self])
}
}

File Metadata

Mime Type
text/plain
Expires
Thu, Nov 6, 5:25 AM (1 d, 18 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3467598

Event Timeline