2016-04-02 4 views
2

Для извлечения изображения с сервера я сделал этоКак связать локальное изображение с представлением изображения с помощью ReactiveKit?

// 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() 
      } 
     } 

    } 

& затем связать его с точки зрения изображения

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

      if ((image) != nil) 
      { 

       image!.bindTo(customCellObj.mContentCellImageView) 
      } 
     } 

Здесь я Fetching изображение из URL с помощью almofire. Есть ли способ, с помощью которого я могу связать локальный образ БД с представлением изображения напрямую с помощью реактивного набора?

ответ

0

Вот как подключить ImageView к вашему потоку:

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) 

Однако при Рискуя слишком очевидной ... Вот что ReactiveUIKit для.

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) 

Также есть расширение Alamofire к ReactiveKit (AlamofireReactive), которые могут оказаться полезными.

Смежные вопросы