2016-08-10 2 views
0

RxSwift 및 드라이버 사용에 대한 질문이 있습니다. RxSwift와 함께 드라이버를 사용하여 구독하십시오.

나는

 loginButton.rx_tap 
      .doOn({[unowned self] _ in 
       self.loginButton.enabled = false 
      }) 
      .debug() 
      .flatMap({[unowned self] in self.loginViewModel.login() }) 
      .subscribeNext({ [weak self] login in 
       // Custom code 
     }) 
     .addDisposableTo(disposeBag) 

그래서 모든 버튼을 탭으로 시작이 패턴 만 시도 ...하지만 난 이런 식으로 시작하려고 할 수있는 경우 : 어디

let contractCode = Variable(contractDetail.contractCode).asDriver() 
    viewModel = viewModel(provider: apiProvider! as! RxMoyaProvider<APIProvider>, contractCode: contractCode) 
    _ = viewModel?.getStatus() 
    .subscribeNext({ data in 
     print(data) 
     guard data?.result == 1 else { 
      // ALERT 
      return; 
     } 
     // Custom code 
    }) 

contractDetail합니다. contractCode는 String, viewModel의 contractCode는 드라이버입니다. 구독 중이지만 onNext가 실행되지 않으므로 subscribeNext가 호출되지 않습니다. 도와 주시겠습니까? 이 접근법에있어 무엇이 잘못 되었습니까? 감사합니다.

답변

2

이 부분은 다음에 발사되지 않았 음을 의미합니다. Variable(contractDetail.contractCode).asDriver()? 그렇다면 계약 코드의 가치를 어떻게 변경합니까? 이 작업을 수행 할 경우 변수가 주어진 값을 준수하지 않기 때문에 당신은 실제 변수의 값 속성을 변경해야 할 수 있도록이 작동하지 않습니다

// binding 
Variable(contractDetail.contractCode).asDriver()./* more binding */ 
// change value (contractCode is a simple string) 
contractDetail.contractCode = "new value of contract" 

이 경우 새 값을

// create variable 
let variable = Variable(contractDetail.contractCode) 
// binding 
variable.asDriver()./* more binding */ 
// change value of variable 
variable.value = "new value of contract" 

을 것이다 해당 변수의 가입자에 대해 onNext 이벤트가 발생합니다.

관련 문제