gpt4 book ai didi

swift - NSData contentsOfUrl 在图像很大时返回 nil

转载 作者:行者123 更新时间:2023-11-28 08:57:43 26 4
gpt4 key购买 nike

我从 facebook 获取图片 url。当图像很大时,它会返回 nil 图像,但图像会显示在浏览器中。

我在 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 文档以获取更多信息 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:

This method is ideal for converting data:// URLs to NSData objects, and can also be used for reading short files synchronously. If you need to read potentially large files, use inputStreamWithURL: to open a stream, then read the file a piece at a time.

关于swift - NSData contentsOfUrl 在图像很大时返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32665630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com