Неоднозначное использование "SD setImage(with: placeholderImage:completed:)" с Swift 3
Я делаю следующий вызов с помощью SDWebImage
на 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
...
});
ошибка:
неоднозначное использование ' sd_setImage(with: placeholderImage: completed:)'
Я подозреваю, что у меня что-то не так в подписи для завершенного обработчика, но я не могу понять, каким должен быть синтаксис. Что я упускаю?
2 ответов
компилятор Swift переводит заголовки ObjC в Swift, что приводит к коллизиям имен:
UIImageView + WebCache.h:
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;
их единственная разница-дополнительная
добавлять SDWebImageOptions
для вызова метода Исправлена проблема:
imageView.sd_setImage(with: someUrl,
placeholderImage: someImage,
options: [],
completed: someCompletitionBlock)