diff --git a/Source/AFMMRecordResponseSerializer/AFMMRecordResponseSerializer.m b/Source/AFMMRecordResponseSerializer/AFMMRecordResponseSerializer.m index eabcf91..78029d3 100644 --- a/Source/AFMMRecordResponseSerializer/AFMMRecordResponseSerializer.m +++ b/Source/AFMMRecordResponseSerializer/AFMMRecordResponseSerializer.m @@ -108,10 +108,15 @@ - (NSManagedObjectContext *)backgroundContext { - (NSArray *)recordsFromMMRecordResponse:(MMRecordResponse *)recordResponse backgroundContext:(NSManagedObjectContext *)backgroundContext { - __block NSMutableArray *objectIDs = [NSMutableArray array]; + NSMutableArray *objectIDs = [NSMutableArray array]; [backgroundContext performBlockAndWait:^{ + NSError *error; NSArray *records = [recordResponse records]; + if (![backgroundContext save:&error]) { + NSLog(@"%s encountered error saving: %@", __PRETTY_FUNCTION__, error); + return; + } for (MMRecord *record in records) { [objectIDs addObject:[record objectID]]; @@ -120,9 +125,12 @@ - (NSArray *)recordsFromMMRecordResponse:(MMRecordResponse *)recordResponse NSMutableArray *records = [NSMutableArray array]; - for (NSManagedObjectID *objectID in objectIDs) { - [records addObject:[self.context objectWithID:objectID]]; - } + + [self.context performBlockAndWait:^{ + for (NSManagedObjectID *objectID in objectIDs) { + [records addObject:[self.context objectWithID:objectID]]; + } + }]; return records; } @@ -179,7 +187,7 @@ - (id)responseObjectForResponse:(NSURLResponse *)response MMRecordResponse *recordResponse = [MMRecordResponse responseFromResponseObjectArray:responseArray initialEntity:initialEntity - context:self.context + context:backgroundContext options:options]; NSArray *records = [self recordsFromMMRecordResponse:recordResponse