如何使用完成块在 swift 中声明此方法?
How to declare this method in swift with a completion block?
我找不到如何在 swift 中声明以下方法:
- (void)downloadImageWithURL:(NSURL *)url completionBlock:(void (^)(BOOL succeeded, UIImage *image))completionBlock {
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if ( !error )
{
UIImage *image = [[UIImage alloc] initWithData:data];
completionBlock(YES,image);
} else{
completionBlock(NO,nil);
}
}];
}
我从 natashatherobot 博客中找到了这个方法:http://natashatherobot.com/ios-how-to-download-images-asynchronously-make-uitableview-scroll-fast/
我想在 swift 中调用相同的方法,并且在异步请求获得图像后将其传递给 completionBlock。
你有什么建议?
func downloadImageWithURL(url: NSURL, completionBlock: (succeeded: Bool, image: UIImage?) -> ()) {
let request = NSMutableURLRequest(URL: url)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response, data, error) in
if error == nil {
let image = UIImage(data: data!)
completionBlock(succeeded: true, image: image!)
} else {
completionBlock(succeeded: false, image: nil)
}
}
}
我找不到如何在 swift 中声明以下方法:
- (void)downloadImageWithURL:(NSURL *)url completionBlock:(void (^)(BOOL succeeded, UIImage *image))completionBlock {
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if ( !error )
{
UIImage *image = [[UIImage alloc] initWithData:data];
completionBlock(YES,image);
} else{
completionBlock(NO,nil);
}
}];
}
我从 natashatherobot 博客中找到了这个方法:http://natashatherobot.com/ios-how-to-download-images-asynchronously-make-uitableview-scroll-fast/
我想在 swift 中调用相同的方法,并且在异步请求获得图像后将其传递给 completionBlock。
你有什么建议?
func downloadImageWithURL(url: NSURL, completionBlock: (succeeded: Bool, image: UIImage?) -> ()) {
let request = NSMutableURLRequest(URL: url)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response, data, error) in
if error == nil {
let image = UIImage(data: data!)
completionBlock(succeeded: true, image: image!)
} else {
completionBlock(succeeded: false, image: nil)
}
}
}