5 votes

Comment vérifier à partir de quelle URL votre connexion NSURLConnection vous donne une réponse ?

Avant iOS5, je pouvais tester l'URL à laquelle je recevais une réponse. Mon code ressemblait à ceci :

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

mon journal afficherait " Currently Parsing: http://www.myinfo.com/parser.... "

que je pourrais ensuite utiliser pour tester et envoyer dans différentes instructions IF. Mon problème actuel est que, dans iOS5, la fonction connection ne s'imprime plus comme une URL, mais comme un bloc de mémoire. <NSURLConnection: 0x6a6b6c0> Comment faire pour qu'il s'imprime à nouveau sous forme d'URL sans avoir à réécrire mes instructions IF ?

7voto

Maulik Points 13234

J'ai fait quelque chose comme ça :

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

5voto

XJones Points 14327

Quand vous mettez %@ dans un NSString il sera remplacé par [object description] . Apple a dû changer ce qui [connection description] retours. Il est difficile de s'y fier dans tous les cas, car il n'est pas garanti qu'il soit dans un format particulier.

Il existe plusieurs façons de modifier votre mise en œuvre. La plus rapide est probablement de créer une sous-classe très simple de NSURLConnection du genre :

// 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
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X