비동기 처리를 동기화 처리 방식으로 처리 할수있다!
email - "@"," . " 가 들어가야한다!
password - 7 자 이상 25자 이하로 된 숫자들만 허용한다!
이메일 과 비밀번호를 체크 해줄수 있는 함수들 입니다!
일단 RxSwift 를 사용하여 체크 하는 방법을 2가지를 보여드릴껀데!! 여러분들도 비교해보시면서
사용하시는것도 좋을것 같아요!!
일단 이방법은 subscribe를 하는 방법입니다!
import RxSwift
import RxCocoa
를 해주시면 텍스트필드에 저런식으로 rx를 달수 있는데요! 이것은 RxCocoa 때문이구요!
orEmpty는 값이 nil 일 경우 EmptyString으로 값이 변환되게 됩니다!.
그리고 .map으로 아까! 만들었던 체크 함수로 값을 Bool 값으로 바꿔 줄꺼에요!
그렇게 되면 return 제약에 맞게 true와 false 로 값이 return 될껍니다!.
그러면!! .distinctUntilChanged가! 실행되고! 만약! 첫번째 값이 true일경우! 두번째 값도 true이면! 값이 나오지않습니다!!But! false 로 바뀌었을시 값이 나오는 것이지요!!
그럼 .subscribe으로 내려가! onNext로 값이 전달되게 되구!! 그안에서 비동기 처리가 진행되는 겁니다.!!
저는
이런식으로 에러이미지를 만들었구!! 만약!! 값이 true 일 경우 제가 원하는 제약에 맞는것이기 때문에 에러 이미지가 없어질꺼에요! 그래서 이미지를 isHidden = true 로 해주는 것이죠!
self?.errorEmailImage.isHidden = t
자 이게 첫번째 방법입니다!! 이것도 굉장히 쉽죠?? 하지만 두번째 방법이 더쉽습니다 ㅎㅎ!!
이게 .subscribe 를 사용하지 않고 .bind 를 사용하는 법인데요!
일단 코드가 조금 줄은게 보이시나요?
원리는 똑같습니다!! 하지만 .bind로 에러 이미지를 바로! 숨겨주는 것인데요!
이렇게 되면 위에서 내려오는 값이 바로! isHidden에 들어가게 되는데요!
요 녀석이 바~~로 bind 해주기 때문입니다. 훨씬 간편하고 깔끔해 보이지 않나요??
그리고 마지막으로~
.disposed 는~
값으로 꼭 이런 DisposeBag 을 보내 주어야 합니다!!
즉 함수를 종료 시킨다 라는 뜻인데요!
마지막에 꼭 .disposed 해줘야! 불필요한 데이터들을 받지 않아도 되겠지용??
이렇게 코드가 끝나게 되면!
요로콤 체크가 가능하게 됩니다 ㅎㅎㅎ
감사합니다~