2014-11-10 29 views
11

Amacım C ile birlikte SDWebImage kullandım ve benim için harika çalıştı ama şimdi Swift'i öğreniyorum ve API'nın en son sürümünü entegre etmeye çalışıyorum ancak API'nin Objective C'de olduğu ve adımların hiçbiri olmadığı için her adımda sıkışıp kaldım API'yi Swift ile kullanmak. Ben belgeleri okumak ve köprü başlık dosyasını oluşturulan ve aşağıda gibi gerekli dosyayı dahil: Ben de çerçeveler eklemişSwift tabanlı projemde en son SDWebImage API nasıl entegre edilir?

#ifndef MyProject_Bridging_Header_h 
#define MyProject_Bridging_Header_h 

#import <SDWebImage/UIImageView+WebCache.h> 
#import "UIImageView+WebCache.h" 

#endif 

ve here

Ben açıklandığı gibi benim uygulama içindeki SDWebImage projesini sürüklenen gerçekten bu konuda mücadele. Lütfen yardım et! Referans için hatayı gösteren bir resim ekledim!

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) 

ve köprü başlık dosyasına: Burada

+0

http://stackoverflow.com/questions/24948480/sdwebimage-crash-in-swift –

+0

daha iyi hızlı bir şekilde görüntülerin önbelleğe alınması için Haneke'yi kullanın https://github.com/Haneke/HanekeSwift –

+0

@Saurabh Prajapati: Bunu kullandınız mı? Nasıl? – Developer

cevap

23

enter image description here çalışması gerektiğini bir kod örneği yüzden köprü başlık dosyası çalışması gerekir

#import "UIImageView+WebCache.h" 

, ama bazen sorun vardı bridging header ve theses durumlarda sadece onu silmek ve tekrar eklemek ve her şey iyi çalışıyor sonra.

+0

Çözümünüzü başlık kullanmadan kullanabilirim ve hala iyi çalışıyor. Teşekkür ederim. – yogipriyo

+0

En iyi cevap en iyi işe yaramaz! – khunshan

3

En iyi seçenek SDWebImage klasörünü projeye sürükleyip bırakmak olacaktır. 'Gerekirse kopyalanan öğeleri' işaretlendiğinden emin olun.

Obj C Köprü Oluşturma: Dosya -> Yeni -> Kaynak -> Başlık Dosyası -> UygulamaAdı-Köprüleme-Üstbilgi olarak adlandır.

ekle aşağıdadır: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

Not: Referans

 #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" 

Swift derleyicisi, Ayarlar İnşa - Kod Üretimi emin Objective-C Bridging Başlık altında ayarı inşa yapmak için bir yol vardır köprüleme başlığı dosyası. - onun testSD/testSD-Köprü-Header.h veya testSD-Köprü-Header.h (başlık dosyası yolu Proje klasörünü açın ve bulmak)

Şimdi bu kod ile deneyin gibi:

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) 

varsayalım Önbellek görüntüleme için bir UICollectionView kullanıyorsanız, bu kodu deneyin.

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 
    } 
0

hızlı 3,0 kodu

ithalat 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) 
İlgili konular