• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

log in 강의 질문드립니다.

21.05.20 20:03 작성 조회수 186

0

안녕하세요. 현재 log in model2강을 수강중입니다.

근데 아래 사진처럼 name, password를 다르게 입력해도

catch부분으로 안넘어가고 do부분이 그대로 실행되어

json파일에서 설정한 값이 그대로 나옵니다.

아래는 코드입니다.

답변 1

답변을 작성해보세요.

0

안녕하세요

catch로 가는 경우는 decode자체가 안되는 에러상황이 생겨야 catch로 넘어갑니다.

 

codable로 만든 타입중 optional이 아닌 타입으로 만들었는데

서버에서 그 값을 안주는 경우이거나

내가 만든 타입과 서버에서 내려오는 타입이 다르게 내려오는 경우가 있을 것입니다.

 

 내가 만든 모델 구조와 서버에서 내려주는 구조를 비교해 보시면 될 것 같습니다.

j3k2kk22님의 프로필

j3k2kk22

질문자

2021.05.20

제가 만든 Model구조와 server에서 설정된 데이터가 이렇게 표시가 됩니다

앱에서 아무런 값도 입력하지 않고 sign in 버튼을 눌러도 error가 안나고

아래 처럼 값을 받아오는데 어떠한 곳이 문제인지를 모르겠습니다.

user ==> [sign_in.loginUsers(id: 0, name: "jeon", email: "kim@demo.com", password: "demo1234")]

네 보시는 그대로 서버에서 내려오는 값 그대로 codable과 맞아서 에러가 나지 않고 decode되고 있습니다.

catch로 가는 경우는 서버에서 안주는걸 codable로 잡아놨을때 에러가 나게 됩니다.

모델에 다른 이름으로 아무거나 추가하시면 확인 가능합니다.

j3k2kk22님의 프로필

j3k2kk22

질문자

2021.05.20

한가지만 더 질문드리겠습니다.

강의를 보면 아무런 값을 입력하지 않거나 틀린 값을 넣었을때

빈배열[]이 출력되었는데요

저는 빈배열이 아니라 이전 답변에 올린것과 같이 서버에 등록되어있는 값이 출력이 됩니다.

그래서 alert기능을 추가하여도 알림이 뜨지 않습니다.

제가 추가적으로 확인해 봐야할 곳이 있을까요?

환경이 어떤지 몰라서 답변 드리기 애매하긴 한데

브라우저에 직접 주소와 파라미터를 쓰고 한번 테스트 해보고 

정상이라면 코드상에서 보내는 파라미터를 한번 확인하면 좋을 것 같습니다.

j3k2kk22님의 프로필

j3k2kk22

질문자

2021.05.21

sign in 버튼의 param.queryString을 print로 찍어보니

app에서 제가 입력한 값이 올바르게 출력이 되는것을 확인했습니다.

틀린 name과 password를 입력해도 

user부분은 서버에 등록되어있는 데이터가 그냥 출력이 되는데

이게 제가 입력한 값과 서버에 등록되어있는 값을 비교하여 일치하면 해당 데이터들을 

출력해주고 아니면 빈배열을 출력해주는 것이 아닌가요?

등록되어있지 않은 다른 값을 입력해도 서버에 있는 값들을 계속 받아와서

해결을 못하고 있습니다.

{

"profile": [

    {

      "name": "user1"

    },

    {

      "name": "user2"

    }

  ]

}

  

json구조가 뭔가 다른게 아닌가 싶네요.

json 파일 위처럼 그대로 만드시고 아래주소를 브라우저에서 바로 호출해보면 user3일때 빈배열로 나오는걸 확인할 수 있을 겁니다.

http://localhost:3000/profile?name=user1

http://localhost:3000/profile?name=user3