2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[Swift-TIL] 데이터 모델링 (실습편)

2024. 11. 20. 21:57ㆍIOS/Swift-TIL
SMALL

이론편에 이어서 실습편이다.

실습편을 보기전,

이론편을 꼭 보고오길 바란다.

https://stayjun.tistory.com/232

 

[Swift-TIL] 데이터 모델링 (이론편)

리스트&반복과 이어지는 내용이다.https://stayjun.tistory.com/231 [Swift-TIL] 리스트&반복List같은 내용을 보여주는 방법 중 하나를 말한다.흔히 리스트라고 한다면,설정에서 이런 부분을 볼 수 있다. 이

stayjun.tistory.com

일단 상황을 더 복잡하게 만들어 놓고

시작을 하는 게 좋을 것 같다.

 

과일에 조합이 있다면 어떠한가?

이렇게 매칭을 시켜주었다

서로 어울리는 것끼리 짝을 지어주면

예를들어,

사과 ↔ 바나나

바나나 ↔ 바나나

체리 ↔ 블루베리

키위 ↔ 골드키위

파인애플 ↔ 귤

이렇게 어울려 보이는 것끼리

매칭을 시켜주려고 한다.

 

정말 많이 헷갈린다.

 

그래서

데이터 모델링이

필요한거다.

 

어떻게 생겨먹는 놈인지

틀을 만들어 놓아야 하는거다.

이렇게 struct를 만들어주는데,

과일이란 모름지기 이름이 있어야 한다.

var fruits 안에 사과, 바나나 등등

얘내들이 과일 이름이다.

 

그리고 

이 Array에서 보면

하나의 과일의 그냥 이름이다.

 

그리고

이 과일의 이름들을

모아놓은 녀석을

과일들이라고 부르기로 한거다.

 

말고도 이제 과일을 매칭하는 변수로

이렇게 만들어줬었는데,

이렇게 해주면,

이거랑 같이먹으면,

매치가 되는 과일의 이름

그리고 가격

 

음.. 근데 가격은..

그냥 숫자로 하겠다.

편의상 문자로 하려했는데,

너무 좀 그러니까 그냥 숫자인 Int로 하겠다.

 

이후에 새로이

변수를 만들어서

이렇게 만들 수 있다.

이런식으로 가이드가 나오니까

훨씬 편하긴 하다..

 

이렇게 넣어줬다.

사과의 베스트 매치는 바나나이고,

가격은 1000원이다.

 

뭔가 전보다는 보기가

좋아진걸 알 수 있다.

이것 같은 경우엔

3개의 걸쳐서 하나씩

집어와야 하지만,

위에서 설계한 것 처럼

과일의 이름과, 그 과일의 매치

그리고

가격까지의 데이터 모델링을

해 두었기 때문에

 

가독성도 올라가고

보기에도 편안해지는 거다.

 

좀더 정리 해보면,

좀더 편안한 안착감(?)이

느껴진다랄까나...

내용만 바꿔주면

이 내용은 필요가 없고

얘도 따로 필요가 없다..

이전과 비교해서

굉장히 깔끔해졌다.

 

이렇게 데이터가 많다면,

깔끔하게 모델링으로

정리할 줄 알아야 한다.

 

물론, 연습이 뒷 받쳐줘야만

이 데이터 모델링이 좀 더

수월하게 진행이 될 거다.

 

리스트 쪽도 바꿔줘야한다.

이전 변수들을 제거 했기 때문에

여기도 변화를 줘야겠다.

 

맨 처음 부분이 favoriteFruit 로

바뀌는게 맞고,

favoriteFruit에서 하나를 꺼내는데,

fruit in에서의 fruit는 여전히 이건 그냥

변수 이름이기 때문에

favoriteFruit에서 하나를 꺼내서

이렇게 하나 꺼내서 들어간다.

그리고 나서

현재 HStack에 텍스트로 fruit 하면

이거 하나만 들어갈꺼다.

 

그래서 나는 여기에 

이름을 붙였었는데,

id: \.self

이런식으로

변수처리를 해주면,

에러가 나게 되는데

이 에러는 Swift에서

ForEach가 내부적으로 요소를

식별하기 위해 해시 값을

사용하기 때문에 Hashable 프로토콜을

채택하게 끔 설정해줘야하는 거다.

 

방법은 의외로 간단하다.

요래 해주면 된다.

생각보다 귀찮다..

 

단순하게 해석하자면,

Fruit 이라는 구조체는

(Hashable)반복될 수 있다.

라고 하는거다.

 

이렇게 해주면 동명2인도 가능하다.

이런식으로 되는데,

지금은 name만

표기하고 있으니

 

나머지도 바꿔보았다.

음... HStack이라서 그런지..

조금 더러워보인다.

 

VStack으로 바꿔보고,

왼쪽 정렬도 해야겠다..

음~ 깔끔해졌다.

 

전과 같이 데이터를 3개로 쪼개져 있는걸

인덱스로 접근 하기 보다는

이런 식으로 하나의 묶음이라면

정확하게 구조체로 모델링을 해주고

그 묶음에서의 이름과

매치된 과일의 이름과 가격을 보는게

훨씬 이해하기 편하고

작업하기도 편하다.

 

게다가

과일의 색상, 크기, 규격 이런것들이

마구 추가가 된다면,

이 모델링이 없을 때에는

Array를 한 8개 정도 봐야될 수도 있고,

8개의 Array에 20개의 데이터...

와... 너무 힘들다..

이렇게 데이터 모델링을 해서

접근을 한다면, 20개의 데이터라면

Fruit가 20개로 늘어날 거라서

큰 부담은 없을 것이고,

8개의 Array는 좀 더 고민을

해보겠지만, 결국엔 Fruit 안에 있는

항목들이 8개로 늘어나는 것이기에

하나의 데이터에 대해서 인지를 하는 데

훨씬 유리할 수 밖에 없는게 확실하다.

 

그래서 모델링을 하는 것이다.

 

생각보다 이렇게 반복해서

만드는 화면들이 구현에 엄청

비중을 차지하고 있는데,

자주쓰는 이커머스, 검색하면 검색 결과

이미지의 제목과 할인된 가격에 버튼들

거래 플랫폼 등등

같은 셀들을 쭉쭉 보여주는 화면들

그런 부분들을 굉장히 많이 차지 하기에

이 데이터 모델링이 중요한 거다.

반복하는것도 중요하다.

728x90