반응형
기본 프로젝트가 위젯과 타겟이 달라서 realm을 같이 쓰려면 앱그룹을 만들어서 사용해야하는데.
이번에 마이그레이션이 자꾸 안돼서 보니 appDelegate랑 위젯 안에서 둘다 마이그레이션을 해줘야 한다는걸 깨달았다.
기존에는 스키마 버전과 패스만 넣어서 양쪽에서 사용했는데,
위젯 먼저 호출이 되어서 앱델리게이트의 마이그레이션 블록이 실행될때는 이미 스키마 버전이 최신이라서 마이그레이션 블록이 실행이 안된건지, 아니면 위젯과 따로 데이터베이스가 생겨서 에러가 난건지는 잘 모르겠다.
참고로 마이그레이션 블록은 블록 내에 실행할 명령이 없거나 최신이면 아예 호출이 안되는것 같다.
final class DatabaseManager {
static let shared = DatabaseManager()
private init() {}
func performMigration()-> Realm {
let container = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "myAppGroup")
let realmURL = container?.appendingPathComponent("default.realm")
let config = Realm.Configuration(fileURL: realmURL, schemaVersion: 3) { migration, oldSchemaVersion in
print("oldVersion:", oldSchemaVersion)
if oldSchemaVersion < 1 { print("0") }
if oldSchemaVersion < 2 { print("1") }
if oldSchemaVersion < 3 {
print("2")
migration.enumerateObjects(ofType: Anniversary.className()) { oldObject, newObject in
newObject?["isStartFromOne"] = true
}
}
}
Realm.Configuration.defaultConfiguration = config
return try! Realm(configuration: config)
}
}
반응형
'iOS' 카테고리의 다른 글
[iOS/Swfit] PHAsset으로 날짜별 사진 가져오기: PHImageManager (0) | 2023.09.21 |
---|---|
[iOS/Swift] 애드몹(AdMob) 테스트 기기 등록: IDFA 확인 (0) | 2023.09.20 |
[iOS] 아이폰 꿀팁 - 여러 앱(아이콘) 선택, 이동하기 (0) | 2023.09.18 |
[iOS] 아이폰 꿀팁 - 텍스트대치 (0) | 2023.09.10 |
[macOS] Clipy : 맥OS 클립보드 확장 프로그램 (0) | 2023.09.09 |