car*_*hwa 28 ios sdwebimage swift3 xcode8
我正在使用SDWebImagemy 进行以下调用imageView,它可以正常工作Swift 2但在XCode 8 beta 5编译时出错Swift 3:
imageView.sd_setImage(with:url, placeholderImage:placeholder, completed: {
(image: UIImage?, error: Error?, cacheType: SDImageCacheType, imageURL: URL?) in
...
});
Run Code Online (Sandbox Code Playgroud)
错误是:
模糊地使用'sd_setImage(with:placeholderImage:completed :)'
我怀疑我在完成的处理程序的签名中有问题,但我无法弄清楚语法应该是什么.我错过了什么?
M_G*_*M_G 58
Swift编译器将ObjC头转换为Swift,从而导致命名冲突:
o1) - (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletionBlock)completedBlock;
o2) - (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletionBlock)completedBlock;
Run Code Online (Sandbox Code Playgroud)
它们唯一的区别是o2中的附加options参数.
s1) open func sd_setImage(with url: URL!, placeholderImage placeholder: UIImage!, completed completedBlock: SDWebImage.SDWebImageCompletionBlock!)
s2) open func sd_setImage(with url: URL!, placeholderImage placeholder: UIImage!, options: SDWebImageOptions = [], completed completedBlock: SDWebImage.SDWebImageCompletionBlock!)
Run Code Online (Sandbox Code Playgroud)
因为options被转换为可选参数(默认分配一个空数组),在Swift中调用s1会导致模糊使用.调用s2可能只是具有相同的实现.在Swift代码中提供这样的方法时options,可以在单个函数实现中将参数添加为可选参数.
作为一种解决方法,options可以设置参数,或者可以暂时重命名o1或o2,直到SDWebImage转换为Swift.
bud*_*ino 19
添加SDWebImageOptions到方法调用可以解决问题:
imageView.sd_setImage(with: someUrl,
placeholderImage: someImage,
options: [],
completed: someCompletitionBlock)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14896 次 |
| 最近记录: |