J’ai utilisé SDWebImage avec Objective C et cela a très bien fonctionné pour moi, mais j’apprends maintenant Swift et tente d’intégrer la dernière version de l’API, mais je suis bloqué à chaque étape, car l’API est dans Objective C et aucune étape n’est indiquée l'API avec Swift. J'ai lu les documents et créé le fichier d'en-tête de pont et inclus le fichier requis comme ci-dessous:
#ifndef MyProject_Bridging_Header_h
#define MyProject_Bridging_Header_h
#import <SDWebImage/UIImageView+WebCache.h>
#import "UIImageView+WebCache.h"
#endif
J'ai également ajouté les frameworks et déplacé le projet SDWebImage dans mon application comme expliqué ici
Je me bats vraiment dans cela. S'il vous plaît aider! Pour référence, j'ai ajouté une image montrant l'erreur!
Voici un exemple de code qui devrait fonctionner:
let block: SDWebImageCompletionBlock! = {(image: UIImage!, error: NSError!, cacheType: SDImageCacheType!, imageURL: NSURL!) -> Void in
println(self)
}
let url = NSURL(string: "http://placehold.it/350x150")
self.imageView.sd_setImageWithURL(url, completed: block)
et dans votre fichier d'en-tête de pontage:
#import "UIImageView+WebCache.h"
Votre fichier d'en-tête de pontage devrait donc fonctionner, mais j'ai parfois des problèmes avec l'en-tête de pontage et, dans ces cas, je le supprime simplement, je l'ajoute à nouveau et tout fonctionne correctement après.
La meilleure option consiste à faire glisser le dossier SDWebImage dans le projet. Assurez-vous que l'option "Copier les éléments si nécessaire" est cochée.
Créer un pontage C Obj C: Fichier -> Nouveau -> Source -> Fichier d’en-tête -> Nom comme nom-app-pontage-en-tête.
Ajouter ce qui suit:
#ifndef AppName_AppName_Bridging_Header_h
#define AppName_AppName_Bridging_Header_h
#import <SDWebImage/UIImageView+WebCache.h>
#import "UIImageView+WebCache.h"
#endif
or
#import "UIImageView+WebCache.h"
Remarque: Les paramètres de construction, dans Swift Compiler - Génération de code, assurez-vous que le paramètre de construction En-tête de pontage Objective-C sous un chemin d'accès au fichier d'en-tête de pontage. - c'est comme testSD/testSD-Bridging-Header.h ou testSD-Bridging-Header.h (ouvrez le dossier Projet et recherchez le chemin du fichier d'en-tête)
Maintenant, essayez avec ce code:
let block: SDWebImageCompletionBlock! = {(image: UIImage!, error: NSError!, cacheType: SDImageCacheType!, imageURL: NSURL!) -> Void in
println(self)
}
let url = NSURL(string: "http://arrow_upward.com/350x150")
self.imageView.sd_setImageWithURL(url, completed: block)
Supposons que si vous utilisez UICollectionView pour renseigner la création d'image en cache, essayez avec ce code.
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = photoListCollectionView.dequeueReusableCellWithReuseIdentifier("scoutimagecellidentifier", forIndexPath: indexPath) as! ScoutImageCell
//Loading image from server using SDWebImage library
let thumbImageUrl = NSURL(string: self.photoPropertyArray[indexPath.row] as String)
//Image Fetching is done in background GCD thread
SDWebImageManager.sharedManager().downloadImageWithURL(thumbImageUrl, options: [],progress: nil, completed: {[weak self] (image, error, cached, finished, url) in
if let wSelf = self {
//On Main Thread
dispatch_async(dispatch_get_main_queue()){
cell.scoutimage.image = image
cell.photoloader.stopAnimating()
}
}
})
return cell
}
Code Swift 3.0
importer SDWebImage
let url = URL.init(string:"https://vignette3.wikia.nocookie.net/zelda/images/b/b1/Link_%28SSB_3DS_%26_Wii_U%29.png")
imagelogo.sd_setImage(with: url , placeholderImage: nil)