Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

iOS 개발일지

1013 새싹 69회차 정리 - Realm Migration 본문

SeSAC iOS 데뷔과정 2기

1013 새싹 69회차 정리 - Realm Migration

Lia's iOS 2022. 10. 13. 18:38
iOS 앱 개발자 데뷔 과정 69회차

 

 

 

 

#1. Migration

하드웨어, 소프트웨어, 네트워크 등 넓은 범위에서 사용되고 있는 개념으로, 현재 운영 환경으로부터 다른 운영 환경으로 옮기는 작업을 말한다.

데이터베이스에서는 스키마 버전을 관리하기 위해 마이그레이션을 사용한다.

 

- Schema Version

Realm 데이터베이스에서는 컬럼이 추가되거나 삭제될 때, Schema Version을 증가시키기만 하면 자동으로 마이그레이션이 이루어진다.

별도로 스키마 버전 넘버를 지정하지 않으면 realm의 기본값은 0이며, 마이그레이션을 진행 할 때는 항상 상위 버전으로 업데이트 해야한다.

더 복잡하게 스키마를 업데이트 해야 할 경우엔 migrationBlock을 활용해서 수동으로 마이그레이션 업데이트를 해야 한다.

 

 

 

- Current Schema Version : 스키마 버전 확인

현재 앱에서 사용하고 있는 스키마 버전을 확인할 수 있다.

 

 

 

- deleteRealmIfMigrationNeeded : 개발중 마이그레이션

앱을 디버깅하거나 개발할 때, 마이그레이션을 대응하는 것 대신 사용할 수 있는 옵션이다.

기존 스키마와 현재 스키마가 불일치 할 경우, 해당 옵션을 활용하면 마이그레이션이 필요할 때 자동으로 기존 스키마를 제거해준다.

릴리즈 버전에서는 절대!! 사용하면 안되므로, 해당 옵션을 사용했다면 릴리즈 전에 꼭 제거하도록 하자.

 

 

 

- Linear Migrations

마이그레이션 블록은 중첩하거나 건너뛰어서는 안된다.

모든 스키마 업데이트를 올바른 순서로 적용할 수 있게 if oldSchemaVersion < X 를 작성해야 한다.

앱이 실행될 때 마이그레이션이 진행되어야 하므로, AppDelegate에서 진행한다.

아래에서는 extension을 통해 코드를 분리하고, 함수를 만든 다음 didFinishLaunchingWithOptions 내에서 호출했다.