티스토리 뷰

  • Realm 을 사용하기 위해 다음과 같은 모델을 정의했다.
class ReviewModel: Object {
    @objc dynamic var id: Int = 0
    @objc dynamic var text: String = ""
    
    override static func primaryKey() -> String? {
        return "id"
    }
}

 

이렇게 사용하다가 Model 에 Field 를 한개 더 추가한 후,

class ReviewModel: Object {
    @objc dynamic var id: Int = 0
    @objc dynamic var text: String = ""
    @objc dynamic var rates: Double = 0.0
    
    override static func primaryKey() -> String? {
        return "id"
    }
}

 

기존에 설치 되어있는 앱에 컴파일 해보면 앱 실행하자마자 다음과 같은 에러를 볼 수 있다.

 

property rates has been added.

 


요 문제 해결을 위해서는 DB를 마이그레이션 해야한다.

(물론 기존에 있던 앱 삭제 후 재설치 하면 아무문제 없지만, 상용앱에서는 일반유저에게 이렇게 했다간 MAU 떡락)

 

AppDelegate 를 열어 application(...) 부분에 아래와 같은 문구를 추가해 준다.

 

let config = Realm.Configuration(schemaVersion: 1,
                                 migrationBlock: { migration, oldVersion in
                                    migration.enumerateObjects(ofType: Review.className()) { oldObj, newObj in
                                        newObj!["rates"] = 0.0
                                    }
                                 })
        
Realm.Configuration.defaultConfiguration = config

코드를 보면 알 수 있듯이, 이미 설치된 앱 DB 스키마를 불러와서 새로 추가된 필드의 Default Value 를 설정해주는 작업

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함