2023. 7. 24. 13:06ㆍ프로젝트
https://github.com/JooHyeonKim/MarketGo
GitHub - JooHyeonKim/MarketGo: 🥬 MZ세대를 공략하기 위한 전통시장 정보 제공 어플
🥬 MZ세대를 공략하기 위한 전통시장 정보 제공 어플. Contribute to JooHyeonKim/MarketGo development by creating an account on GitHub.
github.com
전통시장 정보제공 어플 MarketGo 를 제작하면서 어려웠던 점 위주로 써보려 한다.


오랜만에 MarketGo를 클론해서 열어보았다. 다시보니 너무 반갑다 ^^
👹 프로젝트를 진행하면서 겪었던 문제들 👹
✍️ 벡엔드로 개발한 부분과 프론트에서 개발한 부분을 처음 연결하려고 했을 때 get이 안되서 너무 답답했었다. 😢

분명 명세서에 써있는 변수명과 타입을 맞춰서 swift로 구조체를 선언했는데 get이 안되는 것이다!!

커밋 메세지를 보니 그때가 생각난다 ㅎㅎ..
3일만에 발견한 문제는 이러했다.

명세서에는 MarketId가 Int로 되어있는데, 실제로 받아오는 데이터는 int형이 아니라 Market 구조체였다.
백엔드에서 MarketId를 foreign key로 지정해두니 market구조체의 모든 내용과 통채로 연결됐다고 한다.
그래서 받을 때 Int형이 아닌 Market구조체 타입인 MarketOne으로 받아야 했다.
구조체를 받는 다른 타입들도 마찬가지다.




상품정보를 받아와서 구현한 페이지들이다.
플러터도 해봤는데 iOS가 훨씬 예뻐서 할맛이 난다.
✍️ 주소에 한글에 포함된다면 한글은 인코딩한 뒤 주소에 넣어야 함.
get을 성공했으니 나머지는 어렵지 않겠지 생각했는데 막판에 가격비교 페이지를 구현할 때 get이 또 안되는 것이다!
get이 안될 때는 구조체의 변수 타입을 잘 맞춰주면 해결됐는데 이번엔 그 문제가 아닌것 같았다.

시장에 있는 상품들과의 가격비교를 위해 상품 이름을 넣으면 상품 정보들이 불러와지도록 구현하는 부분이다.
처음에는 String타입의 변수 goodsName을 urlString에 넣고 호출했었는데 한글은 주소에 그냥 넣으면 안되는 거였다.
밑줄친 makeStringKoreanEncoded 함수로 한글을 인코딩한 뒤 url에 넣어줬더니 정상작동했다.

✍️ 장바구니 구현
장바구니 구현도 쉽지 않았다.

받아오는 데이터 타입이 배열이 아닌 개별적인 변수로 되어있는데,
장바구니 담기 및 삭제로 인해 내용이 수정되었을 때 어떻게 처리해서 서버로 보내야 할지 고민이었다.

별도의 상품구조체를 만들고, 삽입과 삭제가 용이한 배열로 바꿔서 처리했다.
이렇게 배열로 처리했더니 장바구니 삽입 삭제가 잘 작동했고, 수정된 결과가 잘 post 되었다.



✍️ 그 외에 내가 구현한 MarketGo 화면들






프론트 2명, back 1명으로 진행했었는데 프론트 두명은 ios 개발이 처음이었던지라 조금 버거운 감이 있었다.
그리고 기능 자체는 ai같은 대단한 기술이 없다보니 페이지 수로 승부봐야 해서 페이지가 너무 많았다 ㅠㅠ
오류가 앞길을 막을 때는 몸에서 사리가 나올 것 같았지만 해결하고 나면 묵은 체증이 싹 내려가는 기분이었다.
여러 시행착오를 겪고 해결해 보고 나니 다음에 또 iOS를 한다면 이번보다는 더 빠르고 완성도 있게 할 수 있을 것 같다.
✍️ [Link 3.0] 2023학년도 2학기 캡스톤디자인 경진대회 - 창업부문🏅우수상


운이 정말 좋았던 거지만 수상까지 해서 보람있었다!