2016-06-29 8 views
0

swift 3に移行すると、なぜこのコードは機能しなくなり、 '、'区切り記号が必要なのでしょうか?なぜこのコードは「Expected '、' separator?

あなたが (があるはずです .持っ
import UIKit 

    class ProfileButton: UIButton { 

     func setProfileImage(address: String?) { 
      self.setImage(UIImage(named: "iconProfile"), for: []) 
      if let img = address { 
       if !img.isEmpty { 
        URLSession.shared().dataTask(URLRequest.with: imgRequest(image: img) as URLRequest, completionHandler: {(data: Data?, response: URLResponse?, error: Error?) in 
         if let imageData = data, image = UIImage(data: imageData) { 
          dispatch_async(dispatch_get_main_queue()) { 
           self.setImage(image.profileImage(), forState: .Normal) 
          } 
         } else if let status = (response as? HTTPURLResponse)?.statusCode { 
          print("image loading status code: \(status)") 
         } 
        }).resume() 
       } 
      } 
     } 
    } 
+2

エラーは何行ですか。 – Alexander

+0

1つの問題は、Swift 3のDispatchXXXタイプのメソッドとしてのみ使用可能なディスパッチコールです。したがって、これはhttp://stackoverflow.com/questions/37801370/how-do-i-dispatch-sync-ディスパッチ・アシンク・ディスパッチ・アフター・イン・スウィフト3。 –

+0

'else 'のない' if let'でアンラップしようとすると、オプション文字列を取るのはなぜですか? – Alexander

答えて

1

URLSession.shared().dataTask(URLRequest.with: //... 

は次のようになります。

URLSession.shared().dataTask(URLRequest(with: //... 

あなたは運命のピラミッドの軽度のケースを持っているし。これはどうですか?

class ProfileButton: UIButton { 

    func setProfileImage(address: String) { 
     self.setImage(UIImage(named: "iconProfile"), for: []) 

     guard !address.isEmpty else { return } 

     let request = URLRequest(with: imgRequest(image: address) as URLRequest){ 
      data, response, error in 
      if let imageData = data, image = UIImage(data: imageData) { 
       dispatch_async(dispatch_get_main_queue()) { 
        self.setImage(image.profileImage(), forState: .Normal) 
       } 
      } else if let status = (response as? HTTPURLResponse)?.statusCode { 
       print("image loading status code: \(status)") 
      } 
     } 

     URLSession.shared().dataTask(request).resume() 
    } 
} 
+0

最初に、運命@AMomchilovのピラミッドという言葉が聞こえてきました。私はあなたのコードに別のエラーが出ます。私は迅速な3 URLRequest構造体への完全なnoobと私はなぜこのエラーが要求と呼ばれる変数から表示されているのかわかりません。 –

+0

imgRequestというのは未解決の識別子です –

+0

私は自分のコードに同じimgRequestを持っていました。私はそれが何であるかの手がかりがありません。 「ピラミッド・オブ・ドゥーム」は、お互いの中にたくさんのブロックを入れ子にし始めるときに形成される三角形です。これは、通常、設計が不良であることを示しています。この場合、私はあなたの 'if'ステートメントのいくつかを変換し、より簡単なものに分割しました – Alexander

関連する問題