-
TIL 4일차 - 배열과 딕셔너리, 모델링iOS 앱 개발 부트캠프/TIL 2024. 9. 12. 17:34
배열과 딕셔너리는 비슷하면서도 다르다.
배열은 같은 형태의 데이터를 사용하고 인덱스로 접근하며 반복을 사용하기 쉽다.
딕셔너리는 키-밸류 형태이고 키 값으로 접근하며 반복이 아닌 접근을 해서 값을 받는다.
데이터 모델링
데이터의 그룹, 설계하고 개발하다보면 만나는 데이터들, 회원가입의 이메일 이름 핸드폰 번호
데이터의 틀을 만드는 작업인 모델링 → 의미를 부여하는 작업
friendNames 라는 문자열 타입의 배열을 선언한 뒤 henry, leeo, jay라는 이름을 세 개를 넣음.
int 타입의 변수 count를 초기값 0으로 선언함.
Label을 만들어 IBOutlet으로 연결한 뒤 Button을 IBAction으로 연결하여 트리거 삼음
버튼을 누를 때마다 count 값을 인덱스 값으로 하여 friendNames 배열에 접근, 값을 불러와 Label에 띄우고 count는 +1 하여 다음 인덱스를 불러올 준비를 함.
따러서 버튼을 누를때마다 화면의 Label 값이 henry → leeo → jay의 순서로 바뀌는 것을 볼 수 있음.
13번째 줄, 딕셔너리 koreanNames를 선언, 키 값을 friendNaems의 값과 같은 영어 문자열로 만들고 밸류 값은 한국어 발음의 문자열로 입력.
23번째 줄, 수 friendName을 정의한 뒤 값을 배열 friendNames의 count번째 값으로 선언.
24번째 줄, friendName의 값을 딕셔너리인 koreanNames의 키 값으로 접근해 밸류인 한글 이름으로 반환 받아 Label로 띄움
여러개의 Label로 배열의 값 한번에 출력하기
Label을 추가한 뒤 각각 bestFriendName, nextFriendName으로 정의하고 nameLabel과 bestFirendNameLabel, nextFriendNameLabel의 값을 배열 friendNames의 0, 1, 2 인덱스 값으로 각각 출력함.
그룹화 하여 명료하게 표현하기
각 이름들을 그룹화 하여 명료하게 나타내기 위해 10~14번째 줄, struct를 활용하여 Family 라는 구조체에 myName, bestFriendName, nextFriendName을 정의함.
21~23번째 줄, friend를 선언하고 구조체 Family의 변수를 각각 friendNames의 값과 같은 값으로 정의, 헷갈리지 않게 뒤에 2를 붙임.
nameLabel과 bestFriendLabel, nextFriendLabel의 값을 각각 friend의 myName, bestFriendName, nextFriendName으로 불러와 앞의 배열로 직접 값을 넣을 때와 같은 방식으로 동작함을 확인함.
학습 후기
→ 이런 방식의 코딩이 왜 필요할까 생각해봐야 할 것 같다. 오늘 배운 예시보다 코드가 좀 더 복잡하고 방대해진 상황에서 오늘 배운 부분이 에러가 났다고 할 때, 처음 방식대로라면 friendNames 배열을 확인하고 각각 friendNames의 값인 이름들이 무슨 이름인지 확인해야 할 수도 있고, 무엇보다 배열의 값이 사용된 부분을 전부 일일이 수정하는 상황이 생길 수 있는데, 구조체를 사용해 그룹화 한 후자의 코드에선 각 변수의 값이 무엇을 의미하고 어디에서 정의되었는지 찾기 간편하고, 수정도 friend 부분만 바꾸면 되는 간단한 작업이 될 수 있을 것 같다.
또 처음엔 각각의 Label에 값을 friendsNames[0], friendsNames[1], friendsNames[2] 이런 식으로 넣길래 간단하게 예시를 보여주는 거지만 일일이 인덱스 값을 넣지 않고 반복문을 쓰면 더 간결하고 유연하겠다고 생각했는데, 직후에 배운 구조체 방식이 더 간결하고 유연한 것 같다. 반복문과 구조체는 사용되는 경우가 다를텐데 어떻게 다르게 쓰이고 어떻게 활용되는지 좀 더 공부해야겠다.'iOS 앱 개발 부트캠프 > TIL' 카테고리의 다른 글
TIL 8일차 - 성적 관리 시스템 제작하기 (0) 2024.09.23 TIL 7일차 - 간단한 데이터 타입 연습 (0) 2024.09.20 TIL 6일차 - 피그마와 친해지기 (1) 2024.09.19 TIL 5일차 (0) 2024.09.13 TIL 3일차 (1) 2024.09.11