Implemented connectionBlock property on RKRelationshipConnectionOperation for tracking connection status synchronously

This commit is contained in:
Blake Watters
2012-12-09 12:21:53 -05:00
parent 90fdf46d37
commit f3cd0f6e07
3 changed files with 24 additions and 13 deletions

View File

@@ -218,14 +218,13 @@ extern NSString * const RKObjectMappingNestingAttributeKeyName;
for (RKConnectionDescription *connection in connections) {
RKRelationshipConnectionOperation *operation = [[RKRelationshipConnectionOperation alloc] initWithManagedObject:mappingOperation.destinationObject connection:connection managedObjectCache:self.managedObjectCache];
__weak RKRelationshipConnectionOperation *weakOperation = operation;
[operation setCompletionBlock:^{
if (weakOperation.connectedValue) {
if ([mappingOperation.delegate respondsToSelector:@selector(mappingOperation:didConnectRelationship:withValue:usingMapping:)]) {
[mappingOperation.delegate mappingOperation:mappingOperation didConnectRelationship:connection.relationship toValue:weakOperation.connectedValue usingConnection:connection];
[operation setConnectionBlock:^(RKRelationshipConnectionOperation *operation, id connectedValue) {
if (connectedValue) {
if ([mappingOperation.delegate respondsToSelector:@selector(mappingOperation:didConnectRelationship:toValue:usingConnection:)]) {
[mappingOperation.delegate mappingOperation:mappingOperation didConnectRelationship:connection.relationship toValue:connectedValue usingConnection:connection];
}
} else {
if ([mappingOperation.delegate respondsToSelector:@selector(mappingOperation:didFailToConnectRelationship:usingMapping:)]) {
if ([mappingOperation.delegate respondsToSelector:@selector(mappingOperation:didFailToConnectRelationship:usingConnection:)]) {
[mappingOperation.delegate mappingOperation:mappingOperation didFailToConnectRelationship:connection.relationship usingConnection:connection];
}
}