반응형
위젯앱을 개발하면서
Realm을 사용하여 데이터를 꺼내오려고 하는데 동작이 잘 되지않더라구요!
그래서 좀 삽질을 한 내용을 기록해볼까해요
현재 메인앱에서 데이터를 저장하고 불러오는게 가능해요
메인앱에서 사용하는 데이터를 위젯으로 불러와서 보여주려고 하는 방법입니다!
분명 Realm연결도 잘되고 잘 불러오는 것 같은데
메인앱에는 데이터가 있는데
위젯에는 자꾸 없다고 뜨더라구요
.
.
.
이 문제의 원인은
Realm의 파일 위치가 위젯과 메인앱은 달라요
당연히 메인에 있는 데이터를 불러올 수 없었다는...ㅠ
// 위젯
🟣realm위치: file:///var/mobile/Containers/Data/PluginKitPlugin/5D8DF5A8-5857-4FBA-8341-80147A2781A7/Documents/todo.realm
// 메인앱
🟣realm위치: file:///var/mobile/Containers/Data/Application/A0A0BCB8-1720-4B4F-A1EE-110AA8BDAC7F/Documents/todo.realm
위젯과 메인앱의 데이터 교환은 일반적인 방법으로는 할 수 없고
AppGroup을 통해서 할 수 있어요
타겟쪽에서
Signing & Capabilities 쪽에 + 를 눌러서
App Groups를 추가하고
사용할 id를 설정해주세요!
메인앱과 위젯 둘다 추가해줘야해요
그리고 이제 realm을 생성하는 path를 다르게 설정해줘야해요
let path = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroupID)?.appendingPathComponent("\(fileName).realm")
let config = Realm.Configuration(fileURL: path)
realm = try? Realm(configuration: config)
file:///private/var/mobile/Containers/Shared/AppGroup/3FB724A2-113B-4E9C-844B-A9CEE4E19BA5/todo.realm
위치가 이와같은 형식으로 변경되요
그러면 정상적으로 메인앱과 위젯데이터가 공유되는걸 확인 할 수 있어요!
반응형
'iyOmSd > Title: Swift' 카테고리의 다른 글
[Swift] iCloud 연동 CloudKit 사용하기(2/2) - 데이터 연결 (0) | 2022.02.16 |
---|---|
[Swift] iCloud 연동 CloudKit 사용하기(1/2) - 추가 및 설정 (0) | 2022.02.15 |
[Swift] Xcode13 info.plist 빈화면 설정방법 (1) | 2021.12.20 |
[Swift] WWDC21 Bring accessibility to charts in your app (0) | 2021.12.08 |
[Swift] WWDC21 Meet async/await in Swift (0) | 2021.11.17 |