如何查看NSURLConnection给你回复的URL?

Lou*_*uie 5 iphone xcode ios4 ios

在iOS5之前我可以测试看看我从我的代码获得响应的URL是这样的:

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

我的日志会打印出来" Currently Parsing: http://www.myinfo.com/parser...."

然后,我可以使用它来测试和发送到不同的IF语句.我现在的问题是,在iOS5中connection不再打印为URL,它打印为内存块<NSURLConnection: 0x6a6b6c0>我怎么能让它再次作为URL打印出来,所以我不必重写我的IF语句?

Mau*_*lik 7

我做了这样的事情:

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


XJo*_*nes 5

当你把%@一个内NSString格式,它会被替换[object description].Apple必须改变[connection description]回报.在任何情况下都很难依赖它,因为它不能保证以任何特定的格式.

您可以通过多种方式更改实施方式.可能最快的是创建一个非常简单的子类NSURLConnection:

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


// 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;
}
Run Code Online (Sandbox Code Playgroud)


// 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
}
Run Code Online (Sandbox Code Playgroud)