Created
May 15, 2013 12:53
-
-
Save Daij-Djan/5583789 to your computer and use it in GitHub Desktop.
NSManagedObjectContext+SafeMerge swizzles -mergeChangesFromContextDidSaveNotification and wraps it in a @Try and catch => this isn't nice but sometimes merging fails for no good reason and this catches the exception there -- needed for GoogleMaps 1.2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import <CoreData/CoreData.h> | |
@interface NSManagedObjectContext (SafeMerge) | |
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "NSManagedObjectContext+SafeMerge.h" | |
#import "NSObject+MethodSwizzle.h" //helpers for swizzeling | |
@implementation NSManagedObjectContext (SafeMerge) | |
+ (void)load { | |
SEL originalSelector = @selector(mergeChangesFromContextDidSaveNotification:); | |
SEL overrideSelector = @selector(mergeChangesFromContextDidSaveNotification_xchg:); | |
[self swizzleInstanceMethodWithSelector:originalSelector withSelector:overrideSelector]; | |
} | |
- (void)mergeChangesFromContextDidSaveNotification_xchg:(NSNotification*)note { | |
@try { | |
[self mergeChangesFromContextDidSaveNotification_xchg:note]; //swizzled original | |
} | |
@catch (NSException *exception) { | |
NSLog(@"failed to merge, skip: %@", exception); | |
} | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment