2015-09-19 3 views
1

Я получаю URL-адрес изображения из facebook. Когда изображение велико, оно возвращает мне ноль, но изображение отображается в браузере.NSData contentsOfUrl возвращает ноль, когда изображение большое

Я видел тот же вопрос на 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

использование асинхронного вызова – karthikeyan

ответ

0

Как сказал @karthikeyan, вы должны использовать асинхронный вызов. Если основной поток не будет заблокирован до загрузки изображения Facebook.

Вы должны иметь что-то вроде о асинхронных вызовов:

dispatch_async(dispatch_get_main_queue(), { 
     ... 
    } 

Взгляните на НОД документации для получения дополнительной информации https://developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/

Если только возвращает ноль, когда вы обращаетесь к большому файлу, кажется, что ваше устройство не может выделить достаточно памяти для его обработки.

Try, чтобы получить конкретную ошибку, возвращаемую:

var error: NSError? 
    let data1 = NSData(contentsOfURL:url , options: nil, error: &error) 
    if let err = error{ 
     println(err) 
    } else { 
     println(data1) 
    } 

Также не следует использовать NSData (contentsOfURL) для получения большого файла, используйте вместо этого NSInputStream, как сказано в документации:

Этот метод идеально подходит для преобразования данных: // URL-адреса в объекты NSData и может также использоваться для одновременного чтения коротких файлов. Если вам нужно прочитать потенциально большие файлы, используйте inputStreamWithURL: чтобы открыть поток, а затем прочитайте файл за раз.