2017-05-19 10 views
1

私はStanfordのiOS開発コースを勉強しています。コースで問題なく動作していたサンプルコードをXcodeにコピーしました。ビューにはURLイメージが表示されず、情報の[任意の読み込みを許可する]を[はい]に設定しています。画面にエラーは表示されませんが、ビューには何も表示されません。xcodeビューにURLが表示されない

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 

    } 
    } 
} 

ありがとうございます。

+0

イメージをダウンロードするコードはどこですか? – Rishab

+0

レスポンスを確認してエラーがあるかどうかを確認できるので、statusCodeなどで、URLSession経由でDataからフェッチします。 – Lamar

答えて

0

DemoURL.swiftからURLが存在していない...あなたは、例えばDemoURL.swiftに書くことができます。

がで参照してください。

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)が同期呼び出しを使用しないでください。 https://developer.apple.com/documentation/foundation/nsdata/1407864-init

2)は、このようにNSURLセッションを使用します。

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)httpを使用しないでください、Appleはios9以降httpsを望みます。

関連する問題