共有されたUserDefaultsを正しくセットアップするためのすべての手順を見てきましたが、何か不足しているはずです。共有されたUserDefaultsがアプリと拡張子の間で正しく動作しない
私は自分のアプリケーションと拡張機能の両方でアクティブ化されたアプリケーショングループ機能を持っています。どちらも同じスイート名("group.TestSharedPreferences"
)を使用して、私はこのように書きます。
viewDidLoad
オン
struct Preferences {
static let shared = UserDefaults(suiteName: "group.TestSharedPreferences")!
}
:
Preferences.shared.set(1, forKey: "INT")
、読み:
だけでも"INT"
を設定した後
synchronize()
を使用して
Preferences.shared.integer(forKey: "INT") // Returns 1 in Container App
Preferences.shared.integer(forKey: "INT") // Returns 0 in Today Extension
拡張機能で取得された値はコンテナAppに保存された値ではありません。私は何が欠けているかもしれないかについての任意のアイデア?ありがとうございました!
両方のターゲットのエンタイトルメントファイルにそのアプリケーショングループが含まれていますか? –
このキーの値が 'nil'であれば' 0'が返されると思います。したがって、これは、今日の拡張コードで 'Preferences.shared'を正しく定義していないか、今日拡張コードが呼び出されているかのいずれかの印のようです。これまでは値を設定する機会があります。 – matt
[アプリケーショングループとの間でデータを通信して永続化する]の可能な複製(http://stackoverflow.com/questions/24015506/communicating-and-persisting-data-between-apps-with-app-groups) – Maetschl