Initial implementation of NSCoding and NSCopying support
This commit is contained in:
parent
b3d63b58c0
commit
9ed38fd30a
2 changed files with 62 additions and 1 deletions
|
|
@ -75,7 +75,7 @@ extern NSString * const AFNetworkingOperationDidFinishNotification;
|
||||||
|
|
||||||
@warning Attempting to load a `file://` URL in iOS 4 may result in an `NSInvalidArgumentException`, caused by the connection returning `NSURLResponse` rather than `NSHTTPURLResponse`, which is the behavior as of iOS 5.
|
@warning Attempting to load a `file://` URL in iOS 4 may result in an `NSInvalidArgumentException`, caused by the connection returning `NSURLResponse` rather than `NSHTTPURLResponse`, which is the behavior as of iOS 5.
|
||||||
*/
|
*/
|
||||||
@interface AFURLConnectionOperation : NSOperation
|
@interface AFURLConnectionOperation : NSOperation <NSCoding, NSCopying>
|
||||||
|
|
||||||
///-------------------------------
|
///-------------------------------
|
||||||
/// @name Accessing Run Loop Modes
|
/// @name Accessing Run Loop Modes
|
||||||
|
|
|
||||||
|
|
@ -606,4 +606,65 @@ didReceiveResponse:(NSURLResponse *)response
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark - NSCoding
|
||||||
|
|
||||||
|
- (id)initWithCoder:(NSCoder *)aDecoder {
|
||||||
|
NSURLRequest *request = [aDecoder decodeObjectForKey:@"request"];
|
||||||
|
|
||||||
|
self = [self initWithRequest:request];
|
||||||
|
if (!self) {
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.runLoopModes = [aDecoder decodeObjectForKey:@"runLoopModes"];
|
||||||
|
self.state = [aDecoder decodeIntegerForKey:@"state"];
|
||||||
|
self.cancelled = [aDecoder decodeBoolForKey:@"isCancelled"];
|
||||||
|
self.response = [aDecoder decodeObjectForKey:@"response"];
|
||||||
|
self.error = [aDecoder decodeObjectForKey:@"error"];
|
||||||
|
self.responseData = [aDecoder decodeObjectForKey:@"responseData"];
|
||||||
|
self.totalBytesRead = [[aDecoder decodeObjectForKey:@"totalBytesRead"] longLongValue];
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)encodeWithCoder:(NSCoder *)aCoder {
|
||||||
|
[self pause];
|
||||||
|
|
||||||
|
[aCoder encodeObject:self.runLoopModes forKey:@"runLoopModes"];
|
||||||
|
[aCoder encodeObject:self.request forKey:@"request"];
|
||||||
|
|
||||||
|
switch (self.state) {
|
||||||
|
case AFHTTPOperationExecutingState:
|
||||||
|
case AFHTTPOperationPausedState:
|
||||||
|
[aCoder encodeInteger:AFHTTPOperationReadyState forKey:@"state"];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
[aCoder encodeInteger:self.state forKey:@"state"];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
[aCoder encodeBool:[self isCancelled] forKey:@"isCancelled"];
|
||||||
|
[aCoder encodeObject:self.response forKey:@"response"];
|
||||||
|
[aCoder encodeObject:self.error forKey:@"error"];
|
||||||
|
[aCoder encodeObject:self.responseData forKey:@"responseData"];
|
||||||
|
[aCoder encodeObject:[NSNumber numberWithLongLong:self.totalBytesRead] forKey:@"totalBytesRead"];
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - NSCopying
|
||||||
|
|
||||||
|
- (id)copyWithZone:(NSZone *)zone {
|
||||||
|
AFURLConnectionOperation *operation = [[[self class] allocWithZone:zone] initWithRequest:self.request];
|
||||||
|
|
||||||
|
operation.runLoopModes = [self.runLoopModes copyWithZone:zone];
|
||||||
|
|
||||||
|
operation.uploadProgress = [self.uploadProgress copy];
|
||||||
|
operation.downloadProgress = [self.downloadProgress copy];
|
||||||
|
operation.authenticationAgainstProtectionSpace = [self.authenticationAgainstProtectionSpace copy];
|
||||||
|
operation.authenticationChallenge = [self.authenticationChallenge copy];
|
||||||
|
operation.cacheResponse = [self.cacheResponse copy];
|
||||||
|
operation.redirectResponse = [self.redirectResponse copy];
|
||||||
|
|
||||||
|
return operation;
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue