Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift NSData contentsOfUrl在图像较大时返回零_Swift_Nsdata - Fatal编程技术网

Swift NSData contentsOfUrl在图像较大时返回零

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

我正在从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_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异步调用