리스트에 추가와 삭제를
하는 법을 익혀 보려고
이 글을 작성했다.
그 전에 반드시 알고 가야하는
개념이 존재한다.
데이터의 상태를 나타내는
'State(스테이트)'
State와 바인딩은
파면 팔수록 깊게 팔 수 있지만,
처음부터 그렇게 하기 보다는
먼저, 왜 필요한것인지
무엇인지,
언제 사용을 하는건지 정도
개념을 잡고 그 컨셉을 이해하는데
초점을 맞춰서 이글을 작성할 예정이다.
데이터의 상태를 나타내는 State

벌써 말부터 살짝 어려움을
느끼기 시작했는데..
이게 무엇인가?
이름이 State 이니까
상태를 나타낼 것 같은데..
View의 State를 나타낼 수 있고,
아무튼 무언가의 상태를 나타내도록
도와주는 거라고 이해하면 되겠다.
'Struct 이기에 필요한 기능이다'

무슨 말이지?
Struct를 잘 모르는 분들은
Struct와 클래스를 정리한
https://stayjun.tistory.com/196
[Swift-TIL] 구조체 - 하나의 동작을 하는 객체 만들기 (이론편)
오늘은 구조체에 대해 배워봤다.일부 개발자들 사이에서는 음..약간 귀찮은 존재(?) 라고도 한다.뭐... 그냥 개인적으로는 이건"사바사" 라고생각한다. 기초 문법을 착실히 공부했다면,구조체가
stayjun.tistory.com
https://stayjun.tistory.com/198
[Swift-TIL] 클래스 - 주소값으로 객체를 만들어보기 (이론편)
클래스를 하기 앞서서 구조체를 알아야 하니,구조체 이론편과 실습편을 학습을 하고 오길 바란다. 구조체와 비교를 해보면서 시작해보겠다.이건 구조체의 생김새다.그렇다면, 클래스는 어떻게
stayjun.tistory.com
위 글들을 살펴보고 오면
조금 더 쉽게 이해가 된다.
아시는 분들은 굳이 보고 오실
필요성은 없다.
위 글들에서 엑셀 예제가 있을텐데
엑셀 작업을 한 후 저장을 해서
다른 사람한테 보내고,
그 보낸 데이터는
나와 상관이 없어 진다.
보낼때는 같은 데이터가 맞는데,
예로, 11월 급여 명세서를
만들어서 저장 후에 보냈는데,
받은 사람은 둘이 같은걸 보고 있지만,
받은 사람이 나는 돈을
더 많이 받아야 한다며
그 숫자를 바꾼다 한들
현재 내가 가지고 있는 엑셀이
바뀌진 않을꺼겠죠?
이러한 부분에 대한 내용으로
엑셀을 예시로 든바가 있다.
State는 화면이 새로
그려져야 할 때를 알려주는 거다.
"왜?"
Struct는 구조체이기 때문이다.
Struct는 한 화면을 그릴 때 한번씩
Struct가 만들어진다.
즉, 새로운 화면이 필요하다면,
이화면이 아닌 다른 화면이
필요하다는 걸 강조하는 거다.
예시로 키보드로 타이핑할 때
글자가 쳐지는데 눈앞에 화면은
바뀌잖아요?
그러면 그 바뀐 화면이
또 새로 그려져야 하는데
그 화면이 새로 그려져야 할 때를
알려주는거다.
그것을 @State 로 표시하는거다.
그래서
"어떤 얘가 변하면, 화면이 새로 그려져야 해!"
라고한다면,
@State를 붙이면 되는거다.

간단하다.
컨셉도 꽤 어렵기도 하고
그 안에 구현된 것도 어렵지만,
일단, @State를 붙이는 건 뭔가 화면이
다시 그려져야 할 때 @State를
붙여주어야 한다는걸
인지하고 있어야한다.
Binding(바인딩)
State에 달러 즉, "$" 이 기호를 붙이면 바인딩이다.
끝(?)
너무 쉽잖아?

바인딩이 무슨뜻인가?
묶는것을 의미하는데,
State가 붙잡고 있는 상태
즉,
"얘가 변하면 화면이 다시 그려져야 해!"
인데.. 그 State가 다른 놈과 붙어 있다면,
쉽게말해, 두개의 State가 연결이 되어 있어서
"A가 변하면 B도 변해야 해!"
그렇다, 쟤들을 바인딩으로 묶어 주는 거다.
그러면 내가 가지고 있는 놈이
State와 바인딩으로 연결이 되어 있을 때
누군가가 바뀌었다면,
바인딩으로 연결된 놈도 바뀌겠죠?
이런 용도라고 생각하면 된다.
이걸 외워서 쓰는 것 보다는
필요한곳에 써 줘야 한다.
어떻게 그걸 필요한지 알 수 있는가?
"여기는 바인딩을 써야하지 않을까?"
라는 고민을 해야할 때도 있는데,
처음 개발을 할 때 바인딩 자리 인것을
에러로 표시해주니 그때
바인딩을 잘 써주면 된다.
리스트의 추가와 삭제로 돌아와서
사실 데이터를 바꾸는 건 어렵지 않는데,
리스트가 Array를 순회해서
어떠한 무언가를 그렸다면,
Array에 엘리먼트들을 추가해주면 된다.
또는 삭제를 해주면 된다.
그리고
상태를 잘 이해하기만 한다면,
즉, 내가 Array에 보여주는 데이터를
State로 만들어준 다음에
"이 Array가 바뀌게 되면 화면을 다시 그려줘!"
라고 하고 "Array가 추가가 되거나
혹은 삭제가 되면,
화면 다시 그려주는 거다!" 라고
한다면 잘 그려 질 거다.
추가는 append(어펜드)
삭제는 remove(리무브)
Array에서 제공되는
함수를 쓸 것이기에
너무 걱정할 필요는 없다.
이미 이것들은 구현이 되어서
제공되는 기능들이기 때문에
머리를 막 쓸 필요도 크게 없다는 점이
강점으로 자리잡고 있다.
단순하게 그냥 이해하고
그냥 쓰면 된다.
조금 많이 추상적인 이야기들이었지만,
기본적으로 개념을 알고 가기 위해
이렇게 글로 남겨 본다.
'IOS > Swift-TIL' 카테고리의 다른 글
[Swift-TIL] 간단한 리스트를 사용한 앱 만들어보기 (2) | 2024.11.23 |
---|---|
[Swift-TIL] 리스트의 추가 및 삭제 (State&Binding) (실습편) (0) | 2024.11.21 |
[Swift-TIL] 데이터 모델링 (실습편) (0) | 2024.11.20 |
[Swift-TIL] 데이터 모델링 (이론편) (0) | 2024.11.20 |
[Swift-TIL] 리스트&반복 (0) | 2024.11.19 |