2024/10 13

[SwiftUI] @SceneStorage(화면 저장소) vs @AppStorage(앱 저장소)

[머릿말]앱에서 필요한 데이터를 저장하기 위해 사용하는 두 개념에 대해 접하게 되었다. 데이터를 저장하는 일은 필수적이므로 자주 찾아보게 될 것 같아 글로 남겨놓고자 한다.@SceneStorage와 @AppStorage는 모두 프로퍼티 래퍼(Property wrapper)다. 이는 SwiftUI가 데이터를 저장할 목적으로 제공한다. 저장할 데이터에 대한 String 타입의 key 값을 통해 데이터를 구분짓는다. 우리가 사용하는 앱은 종료되더라도 데이터는 보존된다. 이는 두 프로퍼티 래퍼를 사용하여 구현해볼 수 있다. ⦿ 두 프로퍼티 래퍼를 사용하지 않았을 때는?두 프로퍼티 래퍼를 사용하지 않은 경우, 앱이 종료되면 데이터는 그 즉시 소멸된다. 간단하게 회원가입 화면을 통해 확인해보자. 아래 코드는 Sce..

[SwiftUI] Deprecated된 tabItem(_:)을 대신하여 Tab()을 사용할 수 있다

[머릿말]Android 앱 개발 공부를 할 때도 느꼈던 것이지만 유독 앱 분야가 변동사항이 많은 것 같다. 비교적 최근에 출판된 책으로 공부를 하고 있음에도 불구하고 deprecated 되었다는 문구를 많이 확인하고 있다. deprecated 되었다는 것은 새로운 대체제가 있다는 것이므로 어떤 대체제가 있는지 찾아보며 공부하고 있는데 이것도 하나의 재미 포인트로 작용하는 것 같다.● tabItem(_:) 이란?공식 문서에서의 내용은 다음과 같다."뷰와 연관된 탭바 아이템을 설정한다."iOS 13.0부터 18.1까지 잘 사용된 함수인 것 같은데... 왜 사라지는 것인가... 이것을 사용하면 TabView의 하단에 tab bar item을 설정할 수 있다. 아래 예제를 통해 확인해보자.import Swift..

[SwiftUI] OutlineGroup과 DisclosureGroup의 차이점

[머릿말]List, OutlineGroup과 DisclosureGroup에 대해 공부하던 중 이것들의 차이점에 대해 궁금해졌다. 자식 데이터에 대한 계층적 구조를 가진 뷰를 만드는 공통점에 반해 차이점은 무엇인지 말이다. 결론부터 말하자면 OutlineGroup은 자식 데이터(children)가 있는 경우 알아서 그에 대한 계층적 뷰를 생성하여 보여준다. 그러나 DisclosureGroup은 계층적 뷰를 만들기 위해선 직접 작성해야 한다는 차이점이 존재한다. 즉, OutlineGroup은 계층적 구조를 가지는 데이터에 대한 뷰를 자동으로 만들어 주는 것이고, DisclosureGroup은 계층적 뷰를 만들 수 있는 껍데기(?)라고 할 수 있는 것이다.● OutlineGroup 이란?공식 문서에서의 내용은..