Как проверить, с какого URL ваш NSURLConnection дает вам ответ? - PullRequest
5 голосов
/ 16 декабря 2011

До выхода iOS5 я мог проверить, какой URL-адрес я получил от своего кода, и выглядело это так:

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

мой журнал распечатал бы "Currently Parsing: http://www.myinfo.com/parser...."

Что я мог бы затем использовать для проверки и отправки в различные операторы IF. Моя проблема в том, что в iOS5 connection больше не печатает как URL, он печатает как блок памяти <NSURLConnection: 0x6a6b6c0> Как я могу заставить его распечатать как URL снова, чтобы мне не пришлось переписывать свой IF заявления?

Ответы [ 2 ]

7 голосов
/ 16 декабря 2011

Я сделал что-то вроде этого:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{
   NSLog(@"%@",[connection currentRequest]);
}
5 голосов
/ 16 декабря 2011

Когда вы вводите %@ в формате NSString, оно будет заменено на [object description].Apple, должно быть, изменила то, что возвращает [connection description].В любом случае на это трудно положиться, поскольку не гарантируется, что он будет в каком-либо конкретном формате.

Существует несколько способов изменить реализацию.Вероятно, самым быстрым является создание очень простого подкласса NSURLConnection в соответствии с:

// 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...