2016-04-02 3 views
2

Für Bild vom Server holen Ich habe dies getanWie bindet man ein lokales Bild mithilfe von ReactiveKit an die Bildansicht?

// fetch image from server 
    func fetchImage(url: NSURL) -> Operation<UIImage, NSError> { 
     return Operation { observer in 

      // use almofire to deal with server request 
      let request = Alamofire.request(.GET, url).response { request, response, data, error in 

       // if error occurs then abort the operation 
       if let error = error { 
        observer.failure(error) 
       } else { 
        // if doesnt occurs error then convert imageData back to image 
        if(data != nil) 
        { 
         observer.next(UIImage(data : data!)!) 
         observer.success() 
        } 
       } 
      } 

      // if response is nil then execute this block 
      return BlockDisposable { 
       request.cancel() 
      } 
     } 

    } 

& es dann im Hinblick auf das Bild, binden

if (url != nil) 
     { 
      let image : ObservableBuffer<UIImage>? = self.fetchImage(url!).shareNext() 

      if ((image) != nil) 
      { 

       image!.bindTo(customCellObj.mContentCellImageView) 
      } 
     } 

Hier almofire mit Ich Abrufen Bild von URL. Gibt es eine Möglichkeit, wie ich ein lokales DB-Bild mit einer Bildansicht direkt über das reaktive Kit binden kann?

Antwort

0

Hier ist, wie Sie ein Imageview zu Ihrem Stream verbinden:

Stream.just(NSURL(string: "https://exoticcars.enterprise.com/etc/designs/exotics/clientlibs/dist/img/homepage/Homepage-Hero-Car.png")!) 
     .flatMapLatest(fetchImage) 
     .flatMapError { _ in return Stream.just(UIImage()) } 
     .observeNext { [weak self] image in self?.imageView.image = image } 
     .disposeIn(bag) 

jedoch auf die Gefahr viel zu offensichtlich ... klingen, Das ist es, was ReactiveUIKit für ist.

Stream.just(NSURL(string: "https://exoticcars.enterprise.com/etc/designs/exotics/clientlibs/dist/img/homepage/Homepage-Hero-Car.png")!) 
     .flatMapLatest(fetchImage) 
     .flatMapError { _ in return Stream.just(UIImage()) } 
     .bindTo(imageView.rImage) 
     .disposeIn(bag) 

Auch gibt es eine Alamofire Erweiterung ReactiveKit (AlamofireReactive), die Ihnen nützlich sein könnten.

Verwandte Themen