2016-07-07 2 views
1

는이 같은 2 가지 방법을 보내고 있습니다. 그래서 저는 이것이 FlatMap으로 할 수있는 것이라고 생각했습니다. 그러나 나는 이것들을 연결하는 방법을 알 수 없다. 내가 좋아하는 시도RXSwift flatMap 두 가지 방법

은 다음과 같습니다 두 가지 방법이 Observables은 반환되기 때문에

Cannot convert return expression of type 'Observable<AnyObject?>' (aka 'Observable<Optional<AnyObject>>') to return type 'Observable<[Tonic]>' (aka 'Observable<Array<Tonic>>') 

내가 문제를 볼 수 없습니다 : 그것은 반환 TonicAdapter의 라인에 날이 오류를 제공

self.remoteService.rxGetAllTonicsForLanguage(language) 
     .subscribeOn(ConcurrentDispatchQueueScheduler(globalConcurrentQueueQOS: .Background)) 
     .flatMap{tonics -> Observable<[Tonic]> in 
      print("Tonics: \(tonics)") 
      let x = tonics as! [Tonic] 
      return TonicAdapter.sharedInstance.saveTonics(x) 
    }.observeOn(MainScheduler.instance) 
     .subscribe({ e in 
      switch e { 
      case .Next(let element): 
       if let result = element as? String { 
        DDLogDebug("Saved something \(result)") 
       } 
      case .Error(let e): 
       DDLogError("Error in save tonics \(e)") 
      case .Completed: 
       DDLogDebug("Completed save tonics") 
      } 
      } 
     ).addDisposableTo(self.disposeBag) 

?

+1

'saveTonics'에 선언 된 리턴 타입을'Observable '에서'Observable <[Tonic]>'으로 변경해야합니다. 또는 동일한 변경 사항을 전송할 수 있습니다 (항상 그렇다고 확신하는 경우). – Putz1103

+0

정말 고마워요. 나는 코드에 너무 빠져서 내가 쓴 것을 보지 못했다 :-). – user1007522

답변

2

saveTonics에 선언 된 반환 유형을 Observable에서 Observable < [Tonic]>으로 변경해야합니다. 또는 동일한 변경 사항을 전송할 수 있습니다 (항상 그렇다고 확신하는 경우).