-
[iOS_MyInventory] Realm 적용 3 - todayExtensionProject/[release] iOS - MyInventory 2020. 3. 22. 14:49
todayExtension 을 적용하기위해 해야할 사항
- main 앱과 위젯이 데이터를 공유하기 위해서는 그룹아이디를 설정해야 한다.
- 이 groupId 를 통하여, realm path 를 지정해 메인앱과 위젯이 같은 realmDB 를 불러오게 한다.groupId 를 생성하고, 이 아이디값을 상수로 저장하여 메인앱, 위젯에서 사용할 수 있게 했다.
메인앱, todayEctension 에 적용하는 groupId TodayExtension 에서 파일에 접근하기위해서 Target 을 체크해야 한다. realm 초기화할때 주의할점
메인앱에서 realm 인스턴스 생성할때 적용한 config 옵션과, 동일한 조건을 적용해야 같은 RealmDB 를 불러 올 수 있는듯 하다.
예) 메인앱에서 migration 을 했다면, 위젯에서도 realm 초기화시 같은 조건을 추가해줘야 한다.
let realmPath = FileManager.default .containerURL(forSecurityApplicationGroupIdentifier: K_GROUP_ID)! .appendingPathComponent(K_DB_NAME) let config = Realm.Configuration( fileURL: realmPath, schemaVersion: 3, migrationBlock: { (migration, oldSchemaVersion) in if oldSchemaVersion < 1 { migration.enumerateObjects(ofType: "RealmTodoItem") { (oldObject, newObject) in oldObject?["detail"] = "migration detail data" } } else if oldSchemaVersion < 2 { // RealmTodoItem.title 삭제 } else if oldSchemaVersion < 3 { migration.enumerateObjects(ofType: "RealmTodoItem") { (oldObject, newObject) in newObject?["status"] = 3 } } }) if let realm = try? Realm(configuration: config) { let results = realm.objects(RealmTodoItem.self) self.todoList = results.map { TodoItem(managedObject: $0) } }
TodayExtension 에서 realm 데이터를 가져와 보여준다. 'Project > [release] iOS - MyInventory' 카테고리의 다른 글
[iOS_MyInventory] 삽질의 흐름 - podfile 설정 (0) 2020.04.02 [iOS_MyInventory] 뷰 디자인 적용 (0) 2020.04.01 [iOS_MyInventory] Realm 적용 2 - Struct 와 같이 사용하기 (0) 2020.03.21 [iOS_MyInventory] Realm 적용 1 - ManagerClass 를 활용하기 (0) 2020.03.20 [iOS_MyInventory] 카테고리 수정, 아이템 리스트 화면 추가 (0) 2020.03.14