2017-05-19 3 views
1

Ich studiere den iOS-Entwicklungskurs von Stanford, und ich kopierte den Beispielcode, der im Kurs perfekt zu meinem Xcode funktionierte. In der Ansicht wird das URL-Bild nicht angezeigt, und ich habe die Option Zulässige Lasten in den Informationen bereits auf "Ja" gesetzt. Es wird kein Fehler auf dem Bildschirm angezeigt, aber die Ansicht zeigt nichts an.xcode Ansicht zeigt keine URL Bild

class ImageViewController: UIViewController 

    { 

    var imageURL: URL? { 
     didSet { 
     image = nil 
      if view.window != nil { 
      fetchImage() 
      } 
     } 
    } 

    private func fetchImage() { 
     if let url = imageURL { 
     let urlContents = try? Data(contentsOf: url) 
      if let imageData = urlContents { 
       image = UIImage(data: imageData) 
      } 
     } 
    } 

override func viewDidLoad() { 
    super.viewDidLoad() 
    imageURL = DemoURL.stanford // for demo/testing purposes only 


//This is the url image. It is in another swift file,the address is (static let stanford = URL(string: "http://stanford.edu/about/images/intro_about.jpg",) I can open it in safari. 

} 

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    if image == nil { // we're about to appear on screen so, if needed, 
     fetchImage() // fetch image 
    } 
} 


fileprivate var imageView = UIImageView() 
private var image: UIImage? { 
     get { 
      return imageView.image 
     } 
     set { 
     imageView.image = newValue 
     imageView.sizeToFit() 
    // careful here because scrollView might be nil 
    // (for example, if we're setting our image as part of a prepare) 
    // so use optional chaining to do nothing 
     // if our scrollView outlet has not yet been set 

    } 
    } 
} 

Vielen Dank im Voraus.

+0

Wo ist der Code, der das Bild herunterlädt? – Rishab

+0

Ich würde über eine URLSession, anstatt von Data abrufen, da Sie die Antwort überprüfen können, um festzustellen, ob ein Fehler vorliegt, statusCode in so? – Lamar

Antwort

0

Die URL, von DemoURL.swift existiert nicht ... Sie zum Beispiel in DemoURL.swift schreiben:

static let stanford = URL(string:"http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Stanford_Oval_May_2011_panorama.jpg/800px-Stanford_Oval_May_2011_panorama.jpg") 
0

1) nicht verwendet synchrone Aufrufe:

zu sehen: https://developer.apple.com/documentation/foundation/nsdata/1407864-init

2) verwenden, um eine NSURL Sitzung auf diese Weise:

let myURL = URL(string: "https: ......")   
let session = URLSession.shared 
let task = session.dataTask(with: myURL!) { (data, resp, err) in 

     var statusCode: NSInteger = 0 
     if let httpResponse : HTTPURLResponse = resp as? HTTPURLResponse{ 
      statusCode = httpResponse.statusCode 
     } 

     if let data = data, statusCode == 200{ 
      if let img = UIImage(data: data){ 
      // use your image... 

      } 
     } 
    } 

3) verwende nicht http, Apple möchte https seit ios9.

Verwandte Themen