iOS 앱 개발 부트캠프/TIL

TIL 8일차 - 성적 관리 시스템 제작하기

iosstudyletsgo 2024. 9. 23. 18:38

오늘은 사전캠프의 과제 중 하나인 성적 관리 시스템 과제를 실습하였다. 몇 가지 절차를 따라 과제를 진행해야 했는데 그중 첫번째인 학생 이름과 id를 입력받아 딕셔너리로 저장하는 과제를 풀었다.

구조체를 배웠기에 이번엔 Struct를 활용해 간결하고 확장성 있는 코드를 짜보고자 했다.

Student 구조체 안에 학생의 이름과 id를 받을 변수를 선언하고, 동명이인으로 인해 딕셔너리 값이 덮어씌워 질 수 있기에 이름을 따로 저장할 배열 StudentList를 선언하고 이름을 key로 id를 value로 갖는 딕셔너리 studentDictionary를 선언하였다.

그 뒤에 학생을 입력받아 추가할 addStudent 함수를 만들어 입력 받은 이름과 id를 배열과 딕셔너리에 추가하고자 했는데 에러가 났다.

어떤 에러인지 찾지 못해 구조체를 쓰는 건 아직인가 싶어서 일단 그냥 단순한 코드로 전환하여 진행했는데, 에러는 나지 않았지만 입력을 받지 못해 오류가 났다. 찾아보니 playground는 입력 받는 방법이 달라서 새로 찾아야 했는데 솔직히 머리가 아파오기 시작했다.

그래서 익숙한 환경인 viewController에서 하기로 하고 코드를 새로 작성했다.

 

처음과 거의 같은 방식인데 입력을 IBOutlet과 IBAction을 통해 받았다.

이것도 처음엔 늘 하던대로 Label을 넣었다가 입력을 할 수가 없어서 찾아보니 text field라는 UI가 있었다.

이름을 받을 text field인 nameField와 id를 받을 text field인 idField를 연결하였고 guard let 언래핑을 통해 입력을 이름과 id를 둘 다 입력 받을 시 이름과 id를 각각 inputName과 inputId에 대입시켰고 둘 중 하나라도 없으면 둘 다 입력하라는 내용이 결과창에 나오도록 했다.

UI상에 이름을 입력하는 칸, id를 입력하는 칸 그리고 입력되지 않은 내용이 있으면 그것을 입력하라는 내용을 전부 나오게 하고 싶었지만 일단 동작이 가능한 걸 목표로 하느라 일단 건너뛰었다.

마지막으로 잘 동작하는 걸 확인하려고 했더니 된 거 같긴 한데 변화를 확인할 코드가 하나도 없어서 결과창에 배열과 딕셔너리의 목록을 출력하는 printStudent 함수를 추가하였다.

서로 다른 이름과 아이디를 여러번 입력하였다.
번호를 입력하지 않거나 같은 이름을 입력해도 잘 반영 되었다.

이후 여러번 여러 이름과 아이디를 입력해 정상적으로 추가되는 것을 확인하였다.

원하는 동작들은 전부 잘 되는 것을 확인하였는데, TIL 작성하면서 코드를 다시 보니 구조체 방식을 사용해놓고 정작 구조체 안에 학생 이름과 아이디를 선언하는 것만 있고 학생을 추가하는 함수나 프린트하는 함수 전부 다 밖에서 따로 노는 구조로 코딩하여서 구조체를 쓴 이유가 없어진듯 하다.

구조체에 대한 이해도가 낮아서 생긴 일인듯 한데, 다음 시간엔 이걸 구조체 안에 넣어 간결하고 확장성과 유지보수성이 더 좋은 코드로 작성하는 걸 시도 해봐야겠고 UI도 내가 할 수 있는 선에서 최대한 더 깔끔하게 다듬어야겠다.

'iOS 앱 개발 부트캠프 > TIL' 카테고리의 다른 글

TIL 10일차  (1) 2024.09.25
TIL 9일차 - 성적 관리 시스템2  (0) 2024.09.24
TIL 7일차 - 간단한 데이터 타입 연습  (0) 2024.09.20
TIL 6일차 - 피그마와 친해지기  (1) 2024.09.19
TIL 5일차  (0) 2024.09.13