2016-08-15 4 views
0

Swift3でクロージャXcode8 beta4を使用しようとしていますが、機能しません。 Swift2.2で動作するクロージャーと同じ機能ですが、Swift3では失敗します。Swift 3でクロージャ構文を使用できません

スウィフト2.2

UIView.animateWithDuration(0.5, animations: { 

     self.viewForInstagramLoginWebView.frame = CGRectMake(x, y,self.viewForInstagramLoginWebView.frame.size.width , self.viewForInstagramLoginWebView.frame.size.height) 

    }) { (finished) in 

     SVProgressHUD.dismiss() 
    } 

しかし、同じ構文Swift3での作業ではありません。

クロージャを使用して関数を作成してみてください。

func greetingMessageWithDate(date : NSDate, message :String, successHandler : (greetingMessage : String, code : Int) -> Void){ 

} 

同じ機能スウィフト2.2で作業していて、スウィフト3

にもSDWebImage完了ブロックの問題に直面していません。 完了ハンドラなしでSDWebImageを使用できますが、完了ハンドラでは失敗します。

完了ハンドラなしで動作します。

imageView.sd_setImage(with: URL(string: "imageURL"), placeholderImage: UIImage(named : "imageName")) 

しかし、補完ハンドラとともに使用すると、コンパイラは指定されたメッセージに不平を言う。 ':placeholderImage:とsd_setImage(完成:)' の

あいまいな使用

enter image description here

imageView.sd_setImage(with: url, placeholderImage: UIImage(named: "imageName"), completed: { (image, error , cacheType , imageURL) in 

     }) 

それは変更が閉鎖構文になり、同じように見えますが、ことを見つける方法何がうまくいかないのですか?

答えて

1

UIViewのアニメーションの構文はにスウィフト3で変更:greetingMessageWithDateを呼び出す

UIView.animate(withDuration: 0.5, animations: { 

}, completion: { (Bool) in 

}) 

greetingMessageWithDate(date: Date(), message: "") { (greetingMessage: String, code: Int) in 

} 
+0

あなたは私 'SDWebImage'のためのソリューションを与えることができますか? – technerd

+0

私はそれが今Swift 3と互換性がないと思う。通常のSwift 3の構文はそのままでは動作しません。 Swift 3のサポートに関しては、未解決の問題もあります。https://github.com/rs/SDWebImage/issues/1627 –

+0

Swift 3でのクロージャの一般的な使用法についての答えを正しいとマークできますか? –

関連する問題