2017-08-23 18 views
0

イメージをダウンロードして別の条件に基づいて表示しようとしています。このコードは、単にメインスレッドでイメージをダウンロードするだけのものでしたが、現在はバックエンドを通してダウンロードしようとしています。ダウンロードイメージが表示されないiOS Swift

私のコンソールはきれいなので、エラーは表示されません。イメージは表示されません。これは、バックエンドのイメージダウンロードを行う際の私の最初の試みであり、私は客観的な視点から来ています。

誰かが下のコードを見て、問題の内容を教えてください。

//FizzBuzz Image Download 
weak var fizzBuzzImage: UIImage! 
let fizzBuzzString = "https://emkaydeum.files.wordpress.com/2015/08/fizzbuzz.png" 
var fizzBuzzURL:NSURL! 

//Fizz Image Download 
weak var fizzImage: UIImage! 
let fizzString = "https://vignette2.wikia.nocookie.net/leagueoflegends/images/b/b0/Fizz_Render.png/revision/latest?cb=20151205185848" 
var fizzURL:NSURL! 

//Buzz Image Download 
weak var buzzImage: UIImage! 
let buzzString = "https://vignette2.wikia.nocookie.net/disney/images/b/bc/Buzz_Disney_INFINITY_Render.png/revision/latest?cb=20140605182818" 
var buzzURL:NSURL! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    fizzBuzzURL = NSURL(string: fizzBuzzString) 
    fizzURL = NSURL(string: fizzString) 
    buzzURL = NSURL(string: buzzString) 
} 

@IBAction func checkTextField(_ sender: UITextView){ 

    enteredValue = userInput.text 

    let checkIfEmpty = userInput.text?.isEmpty 

    if (checkIfEmpty == false) { 
    let multipleOf3:Int = Int(enteredValue)!%3 
    let multipleOf5:Int = Int(enteredValue)!%5 

     if (multipleOf3 == 0 && multipleOf5 == 0) { 
      fizzBuzz.text = "FizzBuzz" 
      URLSession.shared.dataTask(with: (fizzBuzzURL as URL), completionHandler: {(fizzBuzzData, resp, error) -> Void in 
       if (error != nil && fizzBuzzData != nil){ 
        OperationQueue.main.addOperation ({ 
         self.displayImage.image = UIImage(data: fizzBuzzData!) 
        }) 
       } 
       }).resume()} 
     else if (multipleOf5 == 0){ 
      fizzBuzz.text = "Buzz" 
      URLSession.shared.dataTask(with: (buzzURL as URL), completionHandler: {(buzzData, resp, error) -> Void in 
       if (error != nil && buzzData != nil){ 
        OperationQueue.main.addOperation ({ 
         self.displayImage.image = UIImage(data: buzzData!) 
       }) 
       } 
       }).resume()} 
     else if (multipleOf3 == 0){ 
      fizzBuzz.text = "Fizz" 
      URLSession.shared.dataTask(with: (fizzURL as URL), completionHandler: {(fizzData, resp, error) -> Void in 
       if (error != nil && fizzData != nil){ 
        OperationQueue.main.addOperation ({ 
         self.displayImage.image = UIImage(data: fizzData!) 
       }) 
       } 
       }).resume()} 
     else { 
      fizzBuzz.text = "Incorrect Value" 
      displayImage.image = nil 
     } 
    } 
} 
+0

(エラー!= nil && fizzBu​​zzData!= nil)あなたがチェックしているエラーは、nilであってはならず、データはnilであってはなりません。 if(error == nil && fizzBu​​zzData!= nil) –

+0

Swiftで 'NSURL'を使用しないでください。ネイティブ対応の' URL'を使用してください。 if節が実際にヒットしたかどうかチェックしましたか? –

+0

エラーがなく、データソースがnilでなければ、応答と共に機能を続行する必要がありますか?あなたのコードごとに – FarisZ

答えて

1

です。あなたは書かれていません。

if (error != nil && fizzBuzzData != nil){ 
        OperationQueue.main.addOperation ({ 
         self.displayImage.image = UIImage(data: fizzBuzzData!) 
        }) 
       } 

実行されたことはありません。以下のようにしてください

0

uiimageviewのcontentModeを設定し、あなたのIF条件をチェックしてくださいscaleAspectFill

とclipsToBounds真

関連する問題