From 8534ab0e0bc8bdfd6c984e84e6bbb48533be451f Mon Sep 17 00:00:00 2001 From: Collin Ruffenach Date: Mon, 10 Nov 2014 09:12:35 -0800 Subject: [PATCH] Fix some error handling warnings from the analyzer --- CRLoom/NSManagedObject+CRLoom.m | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/CRLoom/NSManagedObject+CRLoom.m b/CRLoom/NSManagedObject+CRLoom.m index 43e7a12..d6e8eb4 100644 --- a/CRLoom/NSManagedObject+CRLoom.m +++ b/CRLoom/NSManagedObject+CRLoom.m @@ -235,16 +235,23 @@ + (NSManagedObject*)importObject:(NSDictionary*)data return (CRShouldSaveContext(moc) && saveOnCompletion) ? [moc save:error] ? object : nil : object; } -+ (void)prepareForImportOfData:(NSArray*)data ++ (BOOL)prepareForImportOfData:(NSArray*)data intoContext:(NSManagedObjectContext*)moc error:(NSError* __autoreleasing *)error { NSArray *idsToImport = [data valueForKeyPath:[@"@distinctUnionOfObjects." stringByAppendingString:[self uniqueDataIdentifierKey]]]; NSArray *existingObjects = [[moc executeFetchRequest:[self emptyFetchRequest] error:error] mutableCopy]; + + if (error && *error != nil) { + return NO; + } + [[existingObjects filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) { return ![idsToImport containsObject:[evaluatedObject valueForKey:[self uniqueModelIdentifierKey]]]; }]] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { [moc deleteObject:obj]; }]; + + return YES; } + (NSArray*)importDataCollection:(NSArray*)data @@ -256,9 +263,11 @@ + (NSArray*)importDataCollection:(NSArray*)data error:(NSError* __autoreleasing *)error { if (pruneExistingObjects) { - [self prepareForImportOfData:data - intoContext:moc - error:error]; + if (![self prepareForImportOfData:data + intoContext:moc + error:error]) { + return nil; + } } NSDictionary *objects = guaranteedInsert ? @@ -343,9 +352,11 @@ + (instancetype)existingObjectWithIdentifierValue:(id)value withCache:(NSCache*)cache error:(NSError* __autoreleasing *)error { if (!value) { - *error = [NSError errorWithDomain:@"com.CRLoom.query" - code:0 - userInfo:@{@"description" : @"Called existingObjectWithIdentifierValue:inContext:withCache:error: with a nil value."}]; + if (error) { + *error = [NSError errorWithDomain:@"com.CRLoom.query" + code:0 + userInfo:@{@"description" : @"Called existingObjectWithIdentifierValue:inContext:withCache:error: with a nil value."}]; + } return nil; } return [self findObjectWithData:@{[self uniqueDataIdentifierKey] : value}