2014-11-10 3 views
11

SDWebImage를 Objective C와 함께 사용했지만 나에게 도움이되었지만 이제는 Swift를 배우고 API의 최신 버전을 통합하려고하지만 API가 Objective C에 있고 단계가 언급되지 않았기 때문에 모든 단계에 갇혀 있습니다. Swift에서 API를 사용합니다. 나는 문서를 읽고 브리지 헤더 파일을 생성하고 다음과 같은 필요한 파일 포함 : 나뿐만 아니라 프레임 워크를 추가 한Swift 기반 프로젝트에서 최신 SDWebImage API를 통합하는 방법은 무엇입니까?

#ifndef MyProject_Bridging_Header_h 
#define MyProject_Bridging_Header_h 

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

#endif 

here

내가 설명으로 내 응용 프로그램 내에서 SDWebImage 프로젝트를 드래그 이 일에 정말로 고심하고 있습니다. 도와주세요! 참고로 오류를 보여주는 이미지를 추가했습니다!

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) 

을하고 브리지 헤더 파일 : 여기

+0

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

+0

더 나은 서비스를 신속한 이미지 캐싱에 Haneke 사용 https://github.com/Haneke/HanekeSwift –

+0

@Saurabh Prajapati : 이것을 사용 했습니까? 어때? – Developer

답변

23

enter image description here 작동합니다 코드 예제 그래서 브리지 헤더 파일이 작동합니다

#import "UIImageView+WebCache.h" 

, 그러나 때때로 나는에 문제가 있었다 브리징 헤더 및 이러한 경우 나는 단지 그것을 삭제하고, 다시 추가하고 다 잘 작동합니다.

+0

솔루션을 사용할 수는 있지만 헤더가 없어도 제대로 작동합니다. 고맙습니다. – yogipriyo

+0

최상의 답변은 아닙니다. – khunshan

3

가장 좋은 방법은 SDWebImage 폴더를 프로젝트로 드래그 앤 드롭하는 것입니다. '필요한 경우 항목 복사'에 체크 표시가되어 있는지 확인하십시오.

Obj C 브리징 만들기 : 파일 -> 새로 만들기 -> 소스 -> 헤더 파일 -> AppName-Bridging-Header로 이름.

추가 다음 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

참고 : 참고

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

스위프트 컴파일러에서 빌드 설정 - 코드 생성 확인 오브젝티브 C 브리징 헤더에서 설정을 구축 할 수 있도록이 경로를 가지고 브리징 헤더 파일. - 그 testSD/testSD-브리징 - header.h가 또는 testSD-브리징 - header.h가 (헤더 파일 경로를 프로젝트 폴더를 열고 찾기)

지금이 코드를 시도 같은 :

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) 

가정하자 UICollectionView를 사용하여 캐시 이미징을 채우는 경우이 코드를 사용해보십시오.

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

빠른 3.0 코드

수입 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)