我正在从facebook获取图片网址。当图像很大时,它返回我的图像,但图像显示在浏览器中。
我在StackOverflow上看到了同样的问题,但它没有工作,data1返回null请检查此代码:
self.delegate.getFacebook_TimeLIne_image = "https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-xfp1/v/t1.0-9/s720x720/12004969_1700631703502015_9114538119221669760_n.jpg?oh=a8ebcac0b2c4152a34855d1c82be3ffe&oe=5696E6BF&__gda__=1449299822_646985c21bc069691493b674069f88ab"
var getUrl_back:String = self.delegate.getFacebook_TimeLIne_image
if(!getUrl_back.isEmpty)
{
if let url = NSURL(string: getUrl_back) {
let data1 = NSData(contentsOfURL: url)
println(data1)
}
}
显示图片是否有其他选项,因为此图片在Android中工作所以为什么在ios中请给我解决方案
答案 0 :(得分:0)
正如@karthikeyan所说,你应该使用异步调用。如果你没有,主要线程将被阻止,直到Facebook图像下载。
你应该有类似于异步调用的东西:
dispatch_async(dispatch_get_main_queue(), {
...
}
请查看GCD文档以获取更多信息https://developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/
如果在访问大文件时它只返回nil,那么您的设备似乎无法分配足够的内存来处理它。
尝试返回返回的特定错误:
var error: NSError?
let data1 = NSData(contentsOfURL:url , options: nil, error: &error)
if let err = error{
println(err)
} else {
println(data1)
}
此外,您不应该使用NSData(contentsOfURL)来检索大文件,而是使用NSInputStream,如文档中所述:
此方法非常适合将data:// URL转换为NSData对象,也可用于同步读取短文件。如果您需要读取可能较大的文件,请使用inputStreamWithURL:打开流,然后一次读取一个文件。