guard에서 text 비교시 주의사항

교재에서는 textField의 값을 guard에서 비교하여 nil을 리턴하라고 했는데
String의 특성상 nil을 저장하면 “”(empty string)이 들어가더군요
즉 String을 다룰 때만 “여자친구가 없음” (nil) 이라고 값을 넣어 표현해도 “여자친구는 0명” (“”) empty string이라고 바꿔주는 것 같습니다.
제가 교재의 의도를 잘못 파악하고 있는건지는 모르겠습니다만, 다른 학우분들을 위해 정보 공유합니다.

좋아요 1

추가적으로 ""와 nil이 같은 값으로 취급되는지 궁금해서 이런 구문을 만들어봤는데 아닌 것 같네요… 혹시 추가적인 정보 아시는 분 계시면 답글 달아주시면 감사하겠습니다.

좋아요 1

tabbar를 만들다가 nil과 ""의 차이에 대해 어떻게 앱애서 표현하는지 궁금해져서 비교해보았습니다.
표현해주는 방식으로 보아하니 역시 nil과 ""은 다른 값인 것 같은데 위 플레이 그라운드에서 왜 guard문에 걸리지 않았는지 아시는 분 없을까요? ㅠㅠㅠ

좋아요 1

텍스트필드(UITextField)에는 아무런 값을 입력하지 않으면 nil이 아니라 “”(길이가 0인 문자열)이 들어갑니다.

그래서 유저가 글을 입력 했는지를 판단하려면 text 프로퍼티의 길이를 0과 비교하거나 ""과 비교해야 합니다.

특이하게도 UITextField의 text 프로퍼티의 내용을 보면 기본값은 nil 이라고 나옵니다.

API 문서에는 기본값이 “” 라고 나옵니다.

좋아요 3

라고 제가 표현하였는데
답변해주신 내용을 바탕으로 생각하면 Textfield의 특성상 “”(empty sting)가 들어간다. 라고 표현하는 것이 맞겠네요

UITextField의 선언부를 보았을 때도 String? 형식이라 위 예제처럼 nil값이 들어가지 않을까 싶었는데, 이 경우는 특수한 경우로 그냥 외워둬야 할 것 같습니다.

답변 감사합니다. 많은 도움이 되었습니다.

좋아요 1