constraint 오류
화면상으로는 문제가 되지 않았는데 콘솔창에 발생한 오류
[LayoutConstraints] Unable to simultaneously satisfy constraints.
동시에 만족하지 않는 제약이 있다고 한다.
"<NSLayoutConstraint:0x600002402850 UIButton:0x138614d30.height == 28 (active)>",
"<NSLayoutConstraint:0x600002402c60 UIStackView:0x13861bae0.height == 40 (active)>"
상당히 친절했다. 버튼의 높이는 28인데 스택뷰의 높이는 40이라고한다.
-> 스택뷰의 alignment 를 .fill 이 아니라 .center 로 바꿔주어 해결하였다.
Realm migration
유저 정보를 Singleton -> Realm 으로 변경하려는데 콘솔창에 프로퍼티를 변경했다고 마이그레이션이 필요하다고 떴다.
Migration is required due to the following errors
마이그레이션이 정확히 뭔지 알아보고 적용하기로 !
migration 이란?
migration 을 알아보기 전에 Schema Version 부터 알아보자..ㅎㅎ
Schema Version 이란?
스키마 버전은 Realm Schema 의 특정 시점에서의 상태를 나타낸다고 한다. (식별자 같은)
Realm 데이터베이스는 각 realm 의 스키마 버전을 추적하고, 이를 사용하여 각 realm의 object를 올바른 스키마에 매핑한다.
스키마 버전은 realm 을 열 때 realm configuration 에 포함되어있다.
client application 이 realm을 열 때 버전 번호를 지정하지 않으면 realm은 기본적으로 버전 0으로 설정된다.
중요!!
Migration은 realm을 상위 스키마 버전으로 업데이트 해야한다.
client application이 realm의 현재 버전보다 낮은 스키마 버전으로 realm을 열거나,
특정한 스키마 버전이 realm의 현재 버전과 동일하지만, 다른 object 스키마를 포함하는 경우
Realm 데이터베이스에서 오류가 발생한다.
-> 이 사실 때문에 콘솔창에서 마이그레이션 (상위 스키마 버전으로 업데이트) 가 필요하다고 떴던 것이었다.
로컬에서 마이그레이션을 하려면 현재 버전보다 높은 새로운 스키마 버전을 지정하고,
이전 realm을 열 때 마이그레이션 기능을 제공해야 한다.
iOS 에서는 수동으로 마이그레이션을 해서 스키마 변경 사항을 반영하도록 업데이트 할 수 있다고 한다.
스키마 업데이트하는 방법
복잡한 스키마 업데이트를 제외하고는 자동으로 스키마를 업데이트 해주면된다.
복잡한 경우 (상황)
- Adding required properties that must be populated with default values
- Combining fields
- Renaming a field
- Changing a field's type
- Converting from an object to an embedded object
이런 경우들이 아니기 때문에 단순히 버전을 올리는 방법으로 해결하였다.
(다른 방법은 참조 두번째 링크를 참고!)
AppDelegate - didFinishLaunchingWithOptions 에 버전2로 업데이트 하도록 추가해주었다. (import RealmSwift)
let config = Realm.Configuration(schemaVersion: 2)
Realm.Configuration.defaultConfiguration = config
참조
1- 스키마, 마이그레이션 2- 마이그레이션 하는 방법
https://www.mongodb.com/docs/realm/sdk/swift/fundamentals/schema-versions-and-migrations/
'iOS > PROJECT' 카테고리의 다른 글
[두깃] 에러처리 (Result) (0) | 2022.04.14 |
---|---|
[두깃] 재밌는거 하는날 (0) | 2022.04.13 |
[두깃] 스토리보드 삭제, 메인화면UI (0) | 2022.04.10 |
[두깃] 깃허브 유저 정보 확인하기 (2022.04.08) (0) | 2022.04.09 |
[두깃] 시작화면 UI (2022.04.07) (0) | 2022.04.07 |