NSData initWithContentsOfURL不读取所有数据,而只读取设备上的数据

时间:2013-11-02 11:00:38

标签: ios uiimage nsdata

我正在讨论我在iOS7开发上遇到的一个问题。我使用以下代码从Web服务器加载图像:

    NSData* data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://someServer/someImage.jpg"]];

这就像模拟器中的魅力一样,完全读取图像所具有的134185个字节。从该数据创建UIImage按预期工作。 但是,一旦我在设备(iPad Mini,iOS 7.03)上测试完全相同的代码,它只会从同一个URL读取14920个字节。毋庸置疑,我无法从该数据创建UIImage,创建失败并返回nil。 读取不会产生任何错误(没有控制台输出,并且还使用带有错误输出参数的签名,这里返回nil)。在这个相当简单的任务中,有什么我错过的吗?在这个网站上没有找到任何东西...

谢谢,habitoti

2 个答案:

答案 0 :(得分:2)

所以你没有任何错误,有些东西正在下载。也许尝试阅读此回复并发布在这里(我猜它是HTML /文本正文)?
您可以使用NSString方法:
+(instancetype)stringWithContentsOfURL:(NSURL )url encoding:(NSStringEncoding)enc error:(NSError * )error;

答案 1 :(得分:0)

我可以建议您使用像SDWebImage这样的库来检索您的图像,它会对其进行缓存并异步下载图像。

它还有一个UIImageView的类别,所以你只需要调用[imageView setImageWithURL:];并且它会在准备就绪时加载图像。