我遇到的真是个奇怪的问题:dataWithContentsOfURL已经开始通过蜂窝网络返回错误代码256,但没有通过wifi返回错误代码256。
该操作无法完成。 (可可错误256。)
我确实确实有一个蜂窝数据连接,并且可以正常工作,所以我的蜂窝连接不是问题。再加上代码在wifi上可以正常工作,因此基本代码不是问题。有问题的代码是:
dispatch_queue_t queue = dispatch_queue_create("com.appName.FetchImage", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{
...
NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
NSLog(@"URL: %@", url);
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
NSError *error = [[NSError alloc] init];
NSData *imgData = [NSData dataWithContentsOfURL:url options:NSDataReadingUncached error:&error];
if (error) NSLog(@"Error loading data: %@", error);
UIImage *image = [UIImage imageWithData:imgData];
...
});
有什么想法吗?我茫然为什么会发生这种情况。它也发生在原始dataWithContentsOfURL(与options相对)中。
最佳答案
NSCocoaErrorDomain Code = 256
的意思是:
与文件系统或文件I / O相关的错误,其原因未知。
简而言之,它告诉我们没有任何内容。
但是,通常,NSData
的dataWithContentsOfURL
仅应用于访问本地文件资源。
重要提示:请勿使用此同步方法来请求基于网络的请求
网址。对于基于网络的URL,此方法可以阻止当前线程
在缓慢的网络上持续数十秒钟,导致用户质量下降
体验,并且在iOS中,可能会导致您的应用终止。
您可以尝试改进代码,并使用更好的方式下载数据。它可能会解决您遇到的问题。除了使用dataWithContentsOfURL
之外,您还可以使用NSURLConnection
的类方法,例如:
+ (void)sendAsynchronousRequest:(NSURLRequest *)request
queue:(NSOperationQueue *)queue
completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler;
基于:
Using NSURLConnection
NSData Class Reference
关于ios - dataWithContentsOfURL通过蜂窝网络返回NSCocoaErrorDomain代码= 256,但不返回wifi,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21959731/