'SharedSequence <DriverSharingStrategy, Data?>'유형의 값을 예상 인수 유형으로 변환 할 수 없습니다.

지구

이 오류를 해결하고 싶습니다. " 'SharedSequence <DriverSharingStrategy, ControlProperty <String?>. Element>'유형의 값 (일명 'SharedSequence <DriverSharingStrategy, Optional>')을 예상 인수 유형 'Driver'(일명 'SharedSequence <DriverSharingStrategy, String>')로 변환 할 수 없습니다." 그리고 " 'SharedSequence <DriverSharingStrategy, Data?>'유형의 값을 예상 인수 유형 'Driver'(일명 'SharedSequence <DriverSharingStrategy, String>')로 변환 할 수 없습니다."

하지만이 오류를 수정하는 방법을 모르겠습니다. viewModel에 맞는 것이 없다고 생각하지만 그것이 무엇인지 모르겠습니다. 오류가 발생한 곳은 asDriver입니다. RxSwift 및 MVVM 패턴을 사용하고 있습니다.

   func bindViewModel() {
        
        let api = ProfileAPI()
        let input = ModifyProfileViewModel.input(nickName: nickNameTxtField.rx.text.asDriver(onErrorJustReturn: nil), userImage: image.asDriver(), doneTap: saveBtn.rx.tap.asSignal())
        let output = viewModel.transform(input)
        
        output.result.emit(onCompleted: { self.navigationController?.popViewController(animated: true)}
        ).disposed(by: rx.disposeBag)
    }

이것은 내 ViewController 코드입니다.

class ModifyProfileViewModel: ViewModelType {
    
    let disposeBag = DisposeBag()
    
    struct input {
        let nickName: Driver<String>
        let userImage: Driver<String>
        let doneTap: Signal<Void>
    }
    
    struct output {
        let result: Signal<String>
        let isEnabled: Driver<Bool>
    }
    
    func transform(_ input: input) -> output {
        let api = ProfileAPI()
        let result = PublishSubject<String>()
        let info = Driver.combineLatest(input.nickName, input.userImage)
        let isEnabled = info.map { !$0.0.isEmpty }
        
        input.doneTap.withLatestFrom(info).asObservable().subscribe(onNext: { nickName, image in
            api.putModifyProfile().subscribe(onNext: { (response, statusCode) in
                switch statusCode {
                case .success:
                    result.onCompleted()
                case .noHere:
                    result.onNext("fail")
                default:
                    result.onNext("default")
                }
            }).disposed(by: self.disposeBag)
        }).disposed(by: disposeBag)
        
        return output(result: result.asSignal(onErrorJustReturn: ""), isEnabled: isEnabled.asDriver())
        
    }
}

그리고 이것은 내 ViewModel 코드입니다. 문제는 무엇입니까?

다니엘 T.

문제는 여기에 있습니다. nickNameTxtField.rx.text.asDriver(onErrorJustReturn: nil)유형 Driver<String?>이지만 Driver<String>.

어느 map와 이전 .map { $0 ?? "" }또는 선택적 개체를 받아들이는 후자를 변경합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관