2016-12-28 50 views
1

如何與RxAlamofireRxAlamofire後多數據

例如發送多部分數據Alamofire

let URL = try! URLRequest(url: "http://example.com", method: .post) 


Alamofire.upload(multipartFormData: { formData in 
    // multiaprt 
}, with: URL, encodingCompletion: {(result: SessionManager.MultipartFormDataEncodingResult) in 

}) 
  1. 如何獲得相同的行爲/功能與RxAlamofire
  2. 或者一種將這個函數包裝在Observable中的方法?

回答

1

您可以輕鬆地包裹像這樣的功能:

func wrapper() -> Observable<SomeResponseType> { 
    return Observable.create { observer in 

     let URL = try! URLRequest(url: "http://example.com", method: .post) 

     Alamofire.upload(
      multipartFormData: { formData in 
       // multiaprt 
      }, 
      with: URL, 
      encodingCompletion: { encodingResult in 

       switch encodingResult { 

       case .success(let upload, _, _): 
        upload.responseJSON { response in 
         // convert response in something of SomeResponseType 
         // ... 
        observer.onNext(response) 
        observer.onCompleted() 
       } 
       case .failure(let encodingError): 
        observer.onError(encodingError) 
       } 
      }) 

     return Disposables.create() 
    } 
}