Dataland왕국 신비로운 Dataland땅에서는
Parcelable이라는 마법 구로 마을 간에 메시지를 전달했습니다
이 구체는 간단한 쪽지부터 복잡한 인공물까지 담을 수 있었는데 안전하게
이동 시키려면 마법으로 여행에 맞는 형태로 변환해야 했습니다
이 과정을 직렬화라고 불렀습니다
마을의 마법사 수장 Parcelize는 이 작업의 전문가였습니다
지팡이를 한 번만 휘두르면 어떤 것이든 마법 정수의 흐름으로 변환해서 Parcelable구체에
봉인할 수 있었습니다
그러나 마법은 이 것이 다가 아니었습니다
Parcelable이 목적지에 도착하면 원래의 형태로 다시 바꿔야 사용할 수
있었습니다
이 역 과정은 역직렬화라고 하는데
Parcelize의 마법의 뛰어남은 여행의 길이나 어려움과 관계없이 데이터의
통합을 보장하였습니다
Parcelable의 내용은 바뀌거나 망가지지 않고 멀쩡했습니다
이 믿음직한 시스템은 마을 간의 이동과 교환을 보장해서 Dataland의 유대를
강화하였
습니다
Kotlin에서는 이 마법이 Parcelable이라는 개념으로 알려져 있습니다
객체는 저장이나 전송에 맞는 형태로 직렬화되고 기존의 형태로
다시 역직렬화됩니다
그리고 이 것이 애플리케이션에서 필요한 것이었습니다
Category를 보면 이는 그냥 스트링이 아니며
우리가 RecipeApp에서 한 화면에서 다른 화면으로 전달한 것은 객체였습니다
여기 RecipeApp에서 category전체를 전달하려는 것을 볼 수 있습니다
객체 자체를 말입니다 그리고 객체를 한 화면에서 다른 화면으로 전달하려면 직렬화해야 합니다
이를 parcelable로 만들어야 합니다
그래서 지난 강의에서 이 Category를 꾸러미화 해서 parcelable로 만들었습니다
또는 이 Category 데이터 클래스 객체가 parcelable이어서 직렬화와 역직렬화를 할 수 있다고
말할 수 있습니다
이 것이 우리가 원하는 것입니다
왜냐하면 직렬화는 기본적으로 객체를 스트링으로 만들기 때문입니다
좋습니다
객체는 id와 이름, 이미지 경로인 categoryThumb와
설명이라는 정보를 가지고 있는데
이 모든 정보들이 객체에서 스트링의 형태로 표현됩니다
그리고 그 parcelable을 역직렬화하면 객체로 다시 변환됩니다
다시 Category객체로 변환됩니다
이 개념은 클래스나 객체 같은 복잡한 데이터 자료형을 전달할 경우 매우
중요합니다 왜냐하면 Category의 데이터 자료형이
하나 이상의 세부 항목을 갖기 때문입니다
그냥 스트링이 아니라
수 많은 다른 정보들입니다
이 경우에 parcelable이 큰 도움이 되는데 단순히 Parselable이라는 키워드를 추가하는
것 만으로 되기 때문이며 이 Parcelize를 입력하고 Parcelize를 import하는 것을 잊어선 안됩니다
또한 build.gradle파일에 미리
이 플러그인이 설치되어 있어야 하며 이를 통해 많은 시간을 절약할 수 있습니다 그렇지 않으면
수동으로 해야 할 것이며 레시피 앱의 수 많은 것들을
직접 관리해야 할 것입니다
이제 Category자료형의 객체 전체를 savedStateHandle에 저장할 수 있게 하며
키-값 쌍으로 저장하려면 어떤 자료형이든 제네릭스를 사용할 수 있습니다
그러나 클래스 자료형이라면 클래스가 꾸러미화될 수 있도록 해야합니다
우리 애플리케이션은 여기까지 입니다
탐색하는 법을 배웠고
데이터를 불러오는 등의 것들도 배웠습니다
상당히 복잡했습니다
특히 이 부분은 상당히 수준 높고 복잡했습니다
하지만 이제 방법을 배웠습니다
그리고 여러분의 애플리케이션에서 재사용하려면 동일한 원리를 적용하면 됩니다