So habe ich mich umgesehen und alle Schritte zum Einrichten freigegebener UserDefaults richtig, aber ich sollte etwas verpassen.Shared UserDefaults zwischen App und Extension funktioniert nicht richtig
Ich habe die Funktion App Groups sowohl in meiner App als auch in meiner Erweiterung aktiviert. Beide verwenden die gleiche Suite Name ("group.TestSharedPreferences"
) und ich schreibe diese Weise:
struct Preferences {
static let shared = UserDefaults(suiteName: "group.TestSharedPreferences")!
}
Auf viewDidLoad
:
Preferences.shared.set(1, forKey: "INT")
Und zu lesen:
Preferences.shared.integer(forKey: "INT") // Returns 1 in Container App
Preferences.shared.integer(forKey: "INT") // Returns 0 in Today Extension
Auch synchronize()
nur nach der Verwendung von "INT"
Einstellung Der in der Erweiterung abgerufene Wert ist nicht der in der Container-App gespeicherte Wert. Irgendwelche Ideen zu was könnte ich vermissen? Vielen Dank!
Enthält die Berechtigungsdatei für beide Ziele diese App-Gruppe? –
Ich würde erwarten, dass "0" zurückgegeben wird, wenn der Wert für diesen Schlüssel "Null" ist. Dies scheint also ein Zeichen dafür zu sein, dass Sie 'Preferences.shared' nicht korrekt im heutigen Erweiterungscode definieren oder der heutige Erweiterungscode _before_ heißt, bevor die App die Chance hat, den Wert zu setzen. – matt
Mögliches Duplikat von [Kommunizierende und persistente Daten zwischen Apps mit App-Gruppen] (http://stackoverflow.com/questions/24015506/communicating-and-persisting-data-between-apps-with-app-groups) – Maetschl