我在Utilities类中使用了loadImage方法,并且在通过闭包返回图像时遇到了一些麻烦.基本上因为我的代码可以返回图像或错误,在调用方法时将其分配给图像属性将不起作用.
我在类的方法声明中使用的方法是错误的,还是应该以不同方式调用方法来预测可能不同的结果?谢谢
public class UtilitiesService: NSObject {
public class func loadImage(urlString:String)
{
var imgURL: NSURL = NSURL(string: urlString)!
let request: NSURLRequest = NSURLRequest(URL: imgURL)
NSURLConnection.sendAsynchronousRequest(
request, queue: NSOperationQueue.mainQueue(),
completionHandler: {(response: NSURLResponse!,data: NSData!,error: NSError!) -> Void in
if error == nil {
self.returnImage(data)
}
})
}
public class func returnImage(imageData: NSData) -> UIImage {
return UIImage(data: imageData)!
}
}
//// view controller
class someView: UIViewController {
var image.image = loadImage(url) ///will throw a return type error
}
Run Code Online (Sandbox Code Playgroud)
Ham*_*ari 21
在loadImage函数中添加一个处理程序:
斯威夫特3
func loadImage(_ urlString: String, handler:@escaping (_ image:UIImage?)-> Void)
{
let imageURL: URL = URL(string: urlString)!
URLSession.shared.dataTask(with: imageURL) { (data, _, _) in
if let data = data{
handler(UIImage(data: data))
}
}.resume()
}
Run Code Online (Sandbox Code Playgroud)
像这样调用func:
loadImage("SomeURL") { (image) -> Void in
if let image = image{
DispatchQueue.main.async {
self.imageView.image = image
}
}
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特2.3
func loadImage(urlString: String, handler: (image:UIImage?)-> Void)
{
let imageURL: NSURL = NSURL(string: urlString)!
NSURLSession.sharedSession().dataTaskWithURL(imageURL) { (data, _, _) in
if let data = data{
handler(image: UIImage(data: data))
}
}.resume()
}
Run Code Online (Sandbox Code Playgroud)
像这样调用func:
loadImage("someURL") { (image) -> Void in
if let image = image{
dispatch_async(dispatch_get_main_queue()) {
self.imageView.image = image
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12143 次 |
| 最近记录: |