Adding conditional NSXMLDocument support for Mac platform

This commit is contained in:
Mattt Thompson 2011-10-11 10:20:22 -05:00
parent 70351a51e1
commit 4c7816e716
2 changed files with 43 additions and 0 deletions

View file

@ -23,15 +23,32 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import "AFHTTPRequestOperation.h" #import "AFHTTPRequestOperation.h"
#import <Availability.h>
@interface AFXMLRequestOperation : AFHTTPRequestOperation { @interface AFXMLRequestOperation : AFHTTPRequestOperation {
@private @private
NSXMLParser *_responseXMLParser; NSXMLParser *_responseXMLParser;
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
NSXMLDocument *_responseXMLDocument;
#endif
NSError *_XMLError;
} }
@property (readonly, nonatomic, retain) NSXMLParser *responseXMLParser; @property (readonly, nonatomic, retain) NSXMLParser *responseXMLParser;
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
@property (readonly, nonatomic, retain) NSXMLDocument *responseXMLDocument;
#endif
+ (AFXMLRequestOperation *)XMLParserRequestOperationWithRequest:(NSURLRequest *)urlRequest + (AFXMLRequestOperation *)XMLParserRequestOperationWithRequest:(NSURLRequest *)urlRequest
success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser))success success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser))success
failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure; failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure;
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
+ (AFXMLRequestOperation *)XMLDocumentRequestOperationWithRequest:(NSURLRequest *)urlRequest
success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLDocument *document))success
failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure;
#endif
@end @end

View file

@ -26,6 +26,10 @@
@interface AFXMLRequestOperation () @interface AFXMLRequestOperation ()
@property (readwrite, nonatomic, retain) NSXMLParser *responseXMLParser; @property (readwrite, nonatomic, retain) NSXMLParser *responseXMLParser;
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
@property (readwrite, nonatomic, retain) NSXMLDocument *responseXMLDocument;
#endif
@property (readwrite, nonatomic, retain) NSError *error;
+ (NSSet *)defaultAcceptableContentTypes; + (NSSet *)defaultAcceptableContentTypes;
+ (NSSet *)defaultAcceptablePathExtensions; + (NSSet *)defaultAcceptablePathExtensions;
@ -33,6 +37,10 @@
@implementation AFXMLRequestOperation @implementation AFXMLRequestOperation
@synthesize responseXMLParser = _responseXMLParser; @synthesize responseXMLParser = _responseXMLParser;
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
@synthesize responseXMLDocument = _responseXMLDocument;
#endif
@synthesize error = _XMLError;
+ (AFXMLRequestOperation *)XMLParserRequestOperationWithRequest:(NSURLRequest *)urlRequest + (AFXMLRequestOperation *)XMLParserRequestOperationWithRequest:(NSURLRequest *)urlRequest
success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser))success success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser))success
@ -84,6 +92,12 @@
_responseXMLParser.delegate = nil; _responseXMLParser.delegate = nil;
[_responseXMLParser release]; [_responseXMLParser release];
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
[_responseXMLDocument release];
#endif
[_XMLError release];
[super dealloc]; [super dealloc];
} }
@ -95,6 +109,18 @@
return _responseXMLParser; return _responseXMLParser;
} }
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
- (NSXMLDocument *)responseXMLDocument {
if (!_responseXMLDocument && [self isFinished]) {
NSError *error = nil;
self.responseXMLDocument = [[[NSXMLDocument alloc] initWithData:self.responseData options:0 error:&error] autorelease];
self.error = error;
}
return _responseXMLDocument;
}
#endif
#pragma mark - NSOperation #pragma mark - NSOperation
- (void)cancel { - (void)cancel {