그래서 공유 된 UserDefaults를 올바르게 설정하기위한 모든 단계를 살펴 보았습니다.하지만 누락 된 부분이 있습니다.공유 된 UserDefaults가 앱과 확장자 사이에서 올바르게 작동하지 않습니다.
내 앱과 내 확장 프로그램에서 모두 활성화 된 앱 그룹 기능이 있습니다. 모두 같은 제품군 이름 ("group.TestSharedPreferences"
)를 사용하고 난 이런 식으로 쓰기 : 심지어 단지 "INT"
을 설정 한 후 synchronize()
를 사용
Preferences.shared.integer(forKey: "INT") // Returns 1 in Container App
Preferences.shared.integer(forKey: "INT") // Returns 0 in Today Extension
:
struct Preferences {
static let shared = UserDefaults(suiteName: "group.TestSharedPreferences")!
}
viewDidLoad
에 :
Preferences.shared.set(1, forKey: "INT")
그리고 읽기를 , 확장에서 검색된 값은 컨테이너 응용 프로그램에 저장된 값이 아닙니다. 내가 누락 될 수있는 것에 대한 아이디어가 있습니까? 고맙습니다!
두 대상의 인 타이틀먼트 파일에 해당 응용 프로그램 그룹이 포함되어 있습니까? –
이 키의 값이'nil' 인 경우'0'이 반환 될 것으로 예상됩니다. 따라서 이것은 오늘 확장 코드에서'Preferences.shared'를 올바르게 정의하지 않았거나 오늘 확장 코드가 호출되기 전에 _before_ 앱이 그 값을 설정할 기회를 얻는다는 표시처럼 보입니다. – matt
가능한 [App 그룹과 앱 간 데이터 통신 및 지속] (http://stackoverflow.com/questions/24015506/communicating-and-persisting-data-between-apps-with-app-groups) – Maetschl