diff --git a/Code/ObjectMapping/RKMappingOperation.m b/Code/ObjectMapping/RKMappingOperation.m index 6739fbf9..b9d042f6 100644 --- a/Code/ObjectMapping/RKMappingOperation.m +++ b/Code/ObjectMapping/RKMappingOperation.m @@ -647,7 +647,12 @@ static NSString * const RKMetadataKeyPathPrefix = @"@metadata."; NSArray *existingObjectsArray = RKTransformedValueWithClass(existingObjects, [NSArray class], nil); [relationshipCollection addObjectsFromArray:existingObjectsArray]; } - + else if (relationshipMapping.assignmentPolicy == RKReplaceAssignmentPolicy) { + if (! [self applyReplaceAssignmentPolicyForRelationshipMapping:relationshipMapping]) { + return NO; + } + } + [value enumerateObjectsUsingBlock:^(id nestedObject, NSUInteger collectionIndex, BOOL *stop) { id mappableObject = [self destinationObjectForMappingRepresentation:nestedObject withMapping:relationshipMapping.mapping inRelationship:relationshipMapping]; if (mappableObject) { @@ -668,9 +673,6 @@ static NSString * const RKMetadataKeyPathPrefix = @"@metadata."; // If the relationship has changed, set it if ([self shouldSetValue:&valueForRelationship atKeyPath:relationshipMapping.destinationKeyPath]) { - if (! [self applyReplaceAssignmentPolicyForRelationshipMapping:relationshipMapping]) { - return NO; - } if (! [self mapCoreDataToManyRelationshipValue:valueForRelationship withMapping:relationshipMapping]) { RKLogTrace(@"Mapped relationship object from keyPath '%@' to '%@'. Value: %@", relationshipMapping.sourceKeyPath, relationshipMapping.destinationKeyPath, valueForRelationship); [self.destinationObject setValue:valueForRelationship forKeyPath:relationshipMapping.destinationKeyPath];