NSData dataWithContentsOfURL:在iOS 6中停止工作

时间:2012-10-15 13:47:37

标签: iphone objective-c ios ios6 nsdata

此问题与this one非常相似。

但是,接受的答案(以及唯一的答案)并不能解决我的问题。

我有一个“混合”iOS应用程序,其中包含一个带有一组UIWebView的UITabView,它显示来自Web服务器的HTML5中的一些应用程序内容。引擎盖下有一个小的自制缓存引擎,可以在后台缓存内容。此缓存引擎使用此行

填充其数据
[NSData dataWithContentsOfURL:request.URL options:NSDataReadingUncached error:&error];

到目前为止,该应用程序已经完美运行,没有任何问题,但在iOS 6中,它已不再适用。使用调试器我得出的结论是上面的行不起作用。当我跨过上面的行时,它只是无法加载页面,过了一会儿我得到一个错误256.当我切换到iOS 5时,它运行得很好。

我已经打印了NSURL-object request.URL,它看起来应该是,它确实包含了“http://”-part,如下所示:

http://app.customername.com/.mvc/MobileApp/Index

我还尝试加载与应用程序网站无关的测试页面,这是我自己创建的一个非常简单的html页面,还有http://www.google.com

它们都在iOS 5.1中工作,但iOS 6中的这些页面也出现了同样的问题。

我也尝试使用没有像这样的“未缓存”选项的方法,但仍然没有运气:

[NSData dataWithContentsOfURL:request.URL]

iOS 6中的方法数据dataWithContentsOfURL发生了什么变化:还有其他人看到过这个问题吗?

1 个答案:

答案 0 :(得分:2)

所以,我遇到了同样的问题,我不知道确切的原因。

我认为它与NSURLCache线程有关,与dataWithContentsOfURL不兼容。如果有人知道为什么请加入。

最重要的是,我的项目中已经有了ASIHTTP,所以我将其替换为:

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];

有了这个:

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:url]];
[request startSynchronous];        
NSData *data = [request responseData];

现在一切都很顺利。