【发布时间】:2016-06-29 21:17:17
【问题描述】:
当迁移到 swift 3 时,为什么这段代码不再工作,并要求它需要一个“,”分隔符?
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()
}
}
}
}
【问题讨论】:
-
错误出现在哪一行?
-
一个问题是调度调用,它只能作为 Swift 3 中 DispatchXXX 类型的方法使用,所以这可能是 stackoverflow.com/questions/37801370/… 的副本。
-
如果您要在没有
else的if let中解包它,为什么要使用可选字符串?