@@ -308,7 +308,7 @@ extension CoreDataWrapper {
308308 ( objectId: NSManagedObjectID ,
309309 context: NSManagedObjectContext ? = nil ,
310310 shouldSave: Bool ,
311- completion: @escaping ( ) -> Void ,
311+ completion: @escaping ( Bool ) -> Void ,
312312 completionOnMainThread: Bool ) {
313313 var innerContext : NSManagedObjectContext
314314 if let context = context {
@@ -317,53 +317,55 @@ extension CoreDataWrapper {
317317 innerContext = self . mainContext
318318 }
319319 innerContext. perform {
320+ var isDeleted = false
320321 if let existingObject = try ? innerContext. existingObject ( with: objectId) ,
321322 !existingObject. isDeleted {
322323 innerContext. delete ( existingObject)
324+ isDeleted = true
323325 }
324- let saveMain = { ( completion: @escaping ( ) -> Void ) in
325- self . saveMainContext ( isSync: false , completion: { ( Bool ) in
326- completion ( )
326+ let saveMain = { ( completion: @escaping ( Bool ) -> Void ) in
327+ self . saveMainContext ( isSync: false , completion: { ( isSuccess ) in
328+ completion ( isSuccess && isDeleted )
327329 } )
328330 }
329- let saveBG = { ( completion: @escaping ( ) -> Void ) in
330- self . saveBGContext ( context: innerContext, isSync: true , completion: { ( Bool ) in
331- completion ( )
331+ let saveBG = { ( completion: @escaping ( Bool ) -> Void ) in
332+ self . saveBGContext ( context: innerContext, isSync: true , completion: { ( isSuccess ) in
333+ completion ( isSuccess && isDeleted )
332334 } )
333335 }
334- let mainCaller = {
336+ let mainCaller = { ( isSuccess : Bool ) in
335337 self . mainContext. perform {
336- completion ( )
338+ completion ( isSuccess )
337339 }
338340 }
339- let bgCaller = {
340- completion ( )
341+ let bgCaller = { ( isSuccess : Bool ) in
342+ completion ( isSuccess )
341343 }
342344 let tuple = ( completionOnMainThread, ( context != nil ) , shouldSave)
343345 switch tuple {
344346 case ( false , false , false ) : //It's main context and no main thread callback
345- bgCaller ( )
347+ bgCaller ( isDeleted )
346348 case ( false , false , true ) : //It's main context and no main thread callback
347- saveMain ( {
348- bgCaller ( )
349+ saveMain ( { ( isSuccess : Bool ) in
350+ bgCaller ( isSuccess )
349351 } )
350352 case ( false , true , false ) : //It's bg context and no main thread callback
351- bgCaller ( )
353+ bgCaller ( isDeleted )
352354 case ( false , true , true ) : //It's bg context and no main thread callback
353- saveBG ( {
354- bgCaller ( )
355+ saveBG ( { ( isSuccess : Bool ) in
356+ bgCaller ( isSuccess )
355357 } )
356358 case ( true , false , false ) : //It's main context and main thread callback
357- bgCaller ( )
359+ bgCaller ( isDeleted )
358360 case ( true , false , true ) : //It's main context and main thread callback
359- saveMain ( {
360- bgCaller ( )
361+ saveMain ( { ( isSuccess : Bool ) in
362+ bgCaller ( isSuccess )
361363 } )
362364 case ( true , true , false ) : //It's bg context and main thread callback
363- mainCaller ( )
365+ mainCaller ( isDeleted )
364366 case ( true , true , true ) : //It's bg context and main thread callback
365- saveBG ( {
366- mainCaller ( )
367+ saveBG ( { ( isSuccess : Bool ) in
368+ mainCaller ( isSuccess )
367369 } )
368370 }
369371 }
@@ -513,12 +515,12 @@ extension CoreDataWrapper {
513515 }
514516 let saveMain = { ( completion: @escaping ( Bool ) -> Void ) in
515517 self . saveMainContext ( isSync: false , completion: { ( isSuccess) in
516- completion ( isSuccess)
518+ completion ( isSuccess && isUpdated )
517519 } )
518520 }
519521 let saveBG = { ( completion: @escaping ( Bool ) -> Void ) in
520522 self . saveBGContext ( context: innerContext, isSync: true , completion: { ( isSuccess) in
521- completion ( isSuccess)
523+ completion ( isSuccess && isUpdated )
522524 } )
523525 }
524526 let mainCaller = { ( updateResult: Bool ) in
0 commit comments