2017-04-13 10 views
0

私は、前の段階ではlet loopを使用していましたが、更新されたバージョンでは同じループを使用できません。ガードレットを使ってみましたが、うまくいきませんでした。スウィフトのオプションバインディングの場合のletの使い方3.1

let imageArray = dataObject?["image"] as! NSArray 
    if let image = imageArray[0]{ 
     let imageURL = "compute.amazonaws.com/" + "\(image)" 
     print(imageURL) 
     if let url: URL = URL(string:"\(imageURL)")!{ 
     let task = URLSession.shared.dataTask(with: url, completionHandler: { (responseData, responseUrl, error) -> Void in 
      if let data = responseData{ 
       DispatchQueue.main.async(execute: {() -> Void in 
        cell?.imageViewProduct.image = UIImage(data: data) 
       }) 
      } 
     }) 
     task.resume() 
    } 
} 

ここで、my image [imageArray [0]は任意の値です。いくつかのケースではバックエンドから提供されていない可能性がありますので、letなどの場合は使いたいです。

+0

画像の種類は何ですか? –

+0

問題は何ですか? –

+0

画像の種類は半分URLの残りは私によって供給されるべきです。 –

答えて

0

私はわからないんだけど、あなたの問題は何ですが、私はむしろそれこのようになるだろう:

guard let imageArray = dataObject?["image"] as? [String] else {return} //as I understand, names of images here 
    guard let image = imageArray.firstObject else {return} 

    let imageURL = "compute.amazonaws.com/\(image)" 
    print(imageURL) 

    if let url = URL(string:"\(imageURL)") { 
     let task = URLSession.shared.dataTask(with: url, completionHandler: { (responseData, responseUrl, error) -> Void in 
      if let data = responseData{ 
       DispatchQueue.main.async(execute: {() -> Void in 
        cell?.imageViewProduct.image = UIImage(data: data) 
       }) 
      } 
     }) 
     task.resume() 
    } 

は少し私のコードを編集しました。あなたは、その文字列を分離する必要はありません、どちらか

+0

私たちが使用した場所の両方でエラーを取得する "非空白関数は値を返すべきです" (英語)私の理解によれば、私たちは他にsupplieを持っています{return} なぜそうですか? –

+0

関数が値を返す場合は、関数に値を返す必要があります。おそらく、あなたはnilを返すことができます –

0

はこれを試してみてください。

let imageArray = dataObject?["image"] as! NSArray 
if let image = "\(imageArray[0])" as? String{ 
    let imageURL = "compute.amazonaws.com/" + "\(image)" 
    print(imageURL) 
    if let url: URL = URL(string:"\(imageURL)")!{ 
    let task = URLSession.shared.dataTask(with: url, completionHandler: { (responseData, responseUrl, error) -> Void in 
     if let data = responseData{ 
      DispatchQueue.main.async(execute: {() -> Void in 
       cell?.imageViewProduct.image = UIImage(data: data) 
      }) 
     } 
    }) 
    task.resume() 
} 
} 
関連する問題