Swift NSData contentsOfUrl在图像较大时返回零
我正在从facebook获得一个图像url。当图像较大时,它返回零图像,但图像显示在浏览器中 我在StackOverflow上看到了相同的问题,但它不起作用,data1返回null请检查以下代码:Swift NSData contentsOfUrl在图像较大时返回零,swift,nsdata,Swift,Nsdata,我正在从facebook获得一个图像url。当图像较大时,它返回零图像,但图像显示在浏览器中 我在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_91145381
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中请给我解决方案,正如@karthikeyan所说,您应该使用异步调用。如果您不这样做,则在下载Facebook图像之前,主线程将被阻止 您应该有一些关于异步调用的内容:
dispatch_async(dispatch_get_main_queue(), {
...
}
更多信息,请参阅GCD文档
如果它只在访问大文件时返回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:打开一个流,然后一次读取一个文件
正如@karthikeyan所说,您应该使用异步调用。如果您不这样做,则在下载Facebook图像之前,主线程将被阻止 您应该有一些关于异步调用的内容:
dispatch_async(dispatch_get_main_queue(), {
...
}
更多信息,请参阅GCD文档
如果它只在访问大文件时返回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:打开一个流,然后一次读取一个文件
使用异步calluse异步调用