2011-12-16 10 views
5

Prima iOS5 ho potuto testare per vedere che cosa URL mi è stato sempre una risposta dal mio codice si presentava così:Come verificare quale URL di NSURLConnection ti da una risposta?

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    returnString = [[[NSMutableString alloc] initWithData:responseData encoding: NSUTF8StringEncoding] autorelease]; 
    NSString * currentParseString = [NSString stringWithFormat:@"%@",connection]; 
    NSLog(@"Currently Parsing: %@",currentParseString); 
} 

mio log sarebbe stampare "Currently Parsing: http://www.myinfo.com/parser...."

quale ho potuto utilizzare per testare e inviare in diverse dichiarazioni IF. Il mio problema ora è che, in iOS5, lo connection non stampa più come URL, sta stampando come blocco di memoria <NSURLConnection: 0x6a6b6c0> Come potrei farlo stampare di nuovo come URL, quindi non devo riscrivere le mie istruzioni IF?

risposta

7

ho fatto qualcosa di simile:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSLog(@"%@",[connection currentRequest]); 
} 
+0

Esattamente quello che stavo cercando! Grazie! – Louie

+1

Interessante. Impossibile trovare 'currentRequest' nei documenti. assicurati che Apple stia bene con esso. – XJones

+1

Ok, trovato 'currentRequest' e' originalRequest' nel file di intestazione 'NSURLConnection'. Sembra che siano solo iOS 5. Quindi vai per questo se è ok per la tua app. – XJones

5

Quando si inserisce %@ all'interno di un formato NSString, verrà sostituito da [object description]. Apple deve aver cambiato ciò che restituisce [connection description]. In ogni caso è difficile fare affidamento perché non è garantito che si trovi in ​​un formato particolare.

Esistono diversi modi per modificare l'implementazione. Probabilmente il più veloce è quello di creare un semplice sottoclasse di NSURLConnection lungo le linee di:

// MyNSURLConnection.h 
// code written assuming ARC 
@interface MyNSURLConnection : NSURLConnection 
@property (nonatomic, strong) NSURL *requestURL; 
@end 


// MyNSURLConnection.m 
// example override, you can override all the init/connection methods 
- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate startImmediately:(BOOL)startImmediately { 
    self = [super initWithRequest:request delegate:delegate startImmediately:startImmediately; 
    if (self) { 
     self.requestURL = request.URL; 
    } 
    return self; 
} 


// in your MyNSURLConnectionDelegate controller 
- (void)connectionDidFinishLoading:(MyNSURLConnection *)connection { 
    returnString = [[[NSMutableString alloc] initWithData:responseData encoding: NSUTF8StringEncoding] autorelease]; 
    NSString * currentParseString = [NSString stringWithFormat:@"%@",connection.requestURL]; 
    NSLog(@"Currently Parsing: %@",currentParseString); 
    // rest of your code 
} 
+0

+1 per un'ottima risposta XJones. Sono andato con Maulik perché il suo era un po 'più in linea con quello che stavo cercando. Anche se terrò presente questa risposta per progetti futuri. Grazie ancora! – Louie

+1

nessun problema. la soluzione più semplice che soddisfi le tue esigenze è la strada da percorrere. – XJones

Problemi correlati