Freigeben von Daten zwischen einer iOS 8-Freigabeerweiterung und der Haupt-App
Vor kurzem habe ich eine einfache iOS 8-Freigabeerweiterung erstellt, um zu verstehen, wie das System funktioniert. Wie Apple in seinerProgrammierhandbuch für App-Erweiterungen:
Standardmäßig haben Ihre übergeordnete App und ihre Erweiterungen keinen direkten Zugriff auf die Container des anderen.
Dies bedeutet, dass die Erweiterung und die enthaltene App keine Daten gemeinsam nutzen. Aber auf der gleichen Seite bringt Apple eine Lösung:
Wenn Sie möchten, dass Ihre enthaltene App und ihre Erweiterungen Daten gemeinsam nutzen können, aktivieren Sie mithilfe von Xcode oder des Entwicklerportals App-Gruppen für die App und ihre Erweiterungen. Registrieren Sie als Nächstes die App-Gruppe im Portal und geben Sie die App-Gruppe an, die in der enthaltenen App verwendet werden soll.
Dann ist es möglich, mit NSUserDefaults Daten zwischen der enthaltenen App und der Erweiterung auszutauschen. Genau das möchte ich tun. Aber aus irgendeinem Grund funktioniert es nicht.
Auf derselben Seite schlägt Apple die Standardeinstellungen vor:
var defaults = NSUserDefaults.standardUserDefaults()
In einer WWDC-Präsentation (217) schlagen sie ein gemeinsames Paket vor:
var defaults = NSUserDefaults(suiteName: kDefaultsPackage)
Außerdem habe ich App-Gruppen für das übergeordnete App-Ziel und das Erweiterungsziel mit demselben App-Gruppennamen aktiviert:
Aber all diese Einstellungen sind umsonst. Ich kann die Daten, die ich in der enthaltenen App gespeichert habe, nicht von der Erweiterung abrufen. Es ist, als ob zwei Ziele völlig unterschiedliche NSUserDefaults-Speicher verwenden.
Damit,
Gibt es eine Lösung für diese Methode?Wie kann ich einfache Daten zwischen der enthaltenen App und der Freigabeerweiterung freigeben? Die Daten sind nur Benutzeranmeldeinformationen für eine API.