我是 Objective-C 的新手,正在阅读《The Big Nerd Ranch Guide to Objective-C Programming》一书。
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSURL *url = [NSURL URLWithString:@"http://www.google.com/imagess/logos/ps_logo2.png"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSError *error =nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request
returningResponse:NULL
error:&error];
if(!data){
NSLog(@"fetch failed %@", [error localizedDescription]);
return 1;
}
NSLog(@"the files is %lu bytes", [data length]);
BOOL written = [data writeToFile:@"/tmp/google.png"
options:NSDataWritingAtomic
error:&error];
if(!written){
NSLog(@"write failed: %@",[error localizedDescription]);
return 1;
}
NSLog(@"Success!");
NSData *readData = [NSData dataWithContentsOfFile:@"/tmp/google.png"];
NSLog(@"the file read from disk has %lu bytes", [readData length]);
}
return 0;
}
问题是这样的,如果我将 *url 更改为http://aFakeDomain.com/imimimi/myImage.png那么我的数据对象将为零,因为没有主机并且一切正常.. 但是如果我使用 google 作为域并指向错误的文件位置,然后数据对象仍然具有标头信息并且不是零,因此我永远不会得到我应该的错误。
确保 *url 成功找到文件的最佳方法是什么。
谢谢