2016-08-15 3 views
0

클로저 Xcode8 beta4를 Swift3과 함께 사용하려고하는데 작동하지 않습니다. 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와 함께 작동하지 않습니다.

클로저가있는 함수를 만들어보십시오. SDWebImage 완료 블록 스위프트 2.2에서 작동

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

} 

동일 기능이 아닌 스위프트 3

또한 대향 문제. 완료 핸들러없이 SDWebImage을 사용할 수 있지만 완료 핸들러가 있으면 실패합니다.

완료 처리기없이 작동합니다.

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

그러나 완료 처리기와 함께 사용하면 컴파일러는 주어진 메시지에 불만을 표시합니다.

'와 sd_setImage (: placeholderImage : 완료 :)'의

모호한 사용

enter image description here

그것은, 변화가 폐쇄 구문,하지만 어떻게 찾을 것 같다
imageView.sd_setImage(with: url, placeholderImage: UIImage(named: "imageName"), completed: { (image, error , cacheType , imageURL) in 

     }) 

무슨 일 이니? 에 스위프트 3 변경

답변

1

UIView의 애니메이션 구문 :

UIView.animate(withDuration: 0.5, animations: { 

}, completion: { (Bool) in 

}) 

greetingMessageWithDate 호출 :

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와 함께 클로저의 일반적인 사용법에 대한 답을 올바르게 표시 할 수 있습니까? –

관련 문제