为什么NSData dataWithContentsOfURL有时会返回NULL值?

swd*_*dev 7 cocoa objective-c

我非常感谢文章将NSData字节转换为NSString?,尤其是@ christo16.我之前依赖于ASIHttpRequest只是为了从PHP服务器获取价值.现在使用这行代码:

NSString *pageContents = [NSData dataWithContentsOfURL: [NSURL URLWithString:@"http://www.apple.com"]]
Run Code Online (Sandbox Code Playgroud)

我可以获得我想要的功能.

但是为什么有时候这行导致pageContents为NULL.我已经将这一行改为:

NSString *fullUrl = [NSString stringWithFormat:@"http://www.apple.com"];
NSURL *url = [[NSURL alloc] initWithString:fullUrl];
NSData *pageContents;
NSString *response = NULL;

while(response==NULL)
{
    pageContents = [NSData dataWithContentsOfURL: [NSURL URLWithString:fullUrl]];
    response = [NSString stringWithUTF8String:[pageContents bytes]];
    NSLog(@"content = %@", response);
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?到目前为止,我没有问题.我只是想知道是否有一种更优雅的方式来实现相同的结果

谢谢

Bri*_*ham 18

nil如果检索数据时出错,它将返回.

您可以使用该dataWithContentsOfURL:options:error:消息找出它返回的原因为零.错误将在NSError*您传递的指针中返回.