2016-04-01 14 views
-2

Bir URL'den görüntü almaya çalışıyorum ancak contentOfURL yöntemi geri dönmeye devam ediyor. URL yasaldır ve yalnızca bir resmi vardır. dispatch_get_global_queue yöntemini ve ayrıca aşağıda açıklanan yöntemi denedim. NSData değeri kaç kez çalıştığımın bir önemi yoktur. Simülatörü de yeniden başlatmayı denedim. Ağ da hızlı ve ağ ile ilgili bir sorun yok. Bu Bu fonksiyon gibi görünmelidir nasılİçindekilerOfURL, geçerli bir URL'den hızlı 2.0 ile sıfır döndürür

var imageURL : NSURL(string : "https://www.nasa.gov/sites/default/files/wave_earth_mosaic_3.jpg") 

if let url = imageURL{ 
     spinner?.startAnimating() 
     let request = NSURLRequest(URL: url) 
     let task = NSURLSession.sharedSession().dataTaskWithRequest(request){(data,response,error) -> Void in 
      self.imageData = NSData(contentsOfURL: url) 
     } 
      dispatch_async(dispatch_get_main_queue()){ 
       if url == self.imageURL{ 
        self.image = UIImage(data: self.imageData!) 
       } 
       else{ 

       } 
     } 
     task.resume() 
    } 
+2

? Gerçekten mi? yakından gözden geçirdik;) –

+0

Yanlışlıkla yapıştırılan üzgünüm! Doğru url'yi deniyorum. – user2604897

+0

http ve https ikisini de kullanıyorsunuz ... bunlardan birini kullanmanız gerekiyor ... tarayıcıda bu URL'yi açın, bir fikre sahip olursunuz –

cevap

0

başarısız kod parçasıdır. GCD'ye gerek yok. Ayrıca, let task = .... ve NSData(contentsOfURL: url) için görüntüyü belirtilen Eric D olarak indirmeye gerek yoktur.

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     var imageURL = "https://www.nasa.gov/sites/default/files/wave_earth_mosaic_3.jpg" 

     loadImage(fromUrl: imageURL) { (image, error) in 
      if let image = image { 
       print("got an image") 
      } else { 
       print("got an error") 
      } 
     } 
    } 

    // pretty function that takes a string and a callback 
    // it sends either an image or an error back through the callback 
    func loadImage(fromUrl urlString: String, completion:(image:UIImage?,error:NSError?) -> Void) { 

     guard let url = NSURL(string:urlString) else { 
      // invalid url 
      completion(image: nil,error: nil) 
      return 
     } 

     let request = NSURLRequest(URL: url) 
     NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in 

      if let error = error { 
       completion(image: nil,error: error) 
       return 
      } 

      guard let data = data, image = UIImage(data:data) else { 
       // no connection error, but no image extracted from data 
       return completion(image: nil, error: nil) 
      } 

      completion(image: image, error: nil) 
     }.resume() 
    } 
} 
+1

'Ayrıca Nasa bağlantısında bir hata var 'Belki o zaman sunucu çok mutlu değildi, ama OP birkaç dakika önce görüntü ile tamam resmini aldım. – Moritz

+0

Ayrıca, err ... neden OP * ve siz de NSData ile veri indirildiğini bir kapatma içinde NSData ile indiriyor? Görüntü verisini iki kez indiriyorsun, bu kod bana pek bir şey ifade etmiyor. :) – Moritz

+0

@EricD Kodun bu bölümünü analiz etmediniz, fakat haklısınız, hiçbir anlam ifade etmiyor. –

İlgili konular