2016-11-14 8 views
0

UserDefaults funktionieren nicht in meiner App. Den folgenden Code finden Sie unter AppDelegate Datei.UserDefault immer Null zurück

let sharingData = UserDefaults.init(suiteName: "group.macuser79.xxx"); 
sharingData?.set("vincenzo", forKey:"username"); 
sharingData?.synchronize(); 

Im InterfaceController der App zu beobachten der Lage sein, den Wert abzurufen, so dass ich dies tat:

override func awake(withContext context: Any?) { 
let sharingData = UserDefaults.init(suiteName: "group.macuser79.xxx"); 

let username = sharingData?.object(forKey: "username"); 
    print("Value username \(username)"); 
} 

Bitte lassen Sie mich wissen, was mache ich falsch!

+0

Alternative Lösung: Einsatz GenericKeychain. https://developer.apple.com/library/content/samplecode/GenericKeychain/Introduction/Intro.html – Poles

+2

10 Als erstes sollten Sie sich ansehen, dass die Gruppe "group.macuser79.xxx" in den beiden Tabs der Projekt-Funktionen definiert ist. –

+0

@ Otávio. Hallo, ich habe überprüft, ob die Gruppe sowohl im Ziel definiert als auch definiert wurde. Haben beide innerhalb des Ziels des iPhone definiert, sowohl innerhalb des Ziels Watch, ist in der Watch Extensions definiert und alles scheint in Ordnung. Ich habe auch das Provisioning-Profil aktualisiert, aber leider nichts. – macuser

Antwort

0

In Swift3UserDefaults gemacht viel schlauer zu erhalten gespeicherten Wert. In folgenden Zeilen werden Speichern Sie String Wert ohne Angabe es

sharingData?.set("vincenzo", forKey:"username"); 

!: um Also, das zu bekommen, müssen Sie wie unten schreiben:

let username = sharingData?.string(forKey: "username"); 
    print("Value username \(username)"); 
} 

Das ist viel besser Kontext Werte basierend auf Ihrem Store erhalten.

+0

Hallo, danke für deine Antwort, aber leider funktioniert es nicht. Ich habe meinen Code wie angegeben korrigiert, aber der Wert ist immer Null. Ich habe auch die App auf dem Simulator des iPhone gestartet, aber leider nicht, es funktioniert nicht. – macuser

+0

Hallo, Ich habe einige Recherchen im Internet gemacht und in diesem Link hat der Benutzer das gleiche Problem, das ich auch habe. http://stackoverflow.com/questions/39808319/swift-3-ios-10-todayextension-userdefaults-always-returns-nil Es sollte ein Problem des Simulators der Apple Watch sein. Wie kann ich jetzt beheben, damit ich versuchen kann, meine App zu testen? Ich war mit nur einem aus und dann kann ich veröffentlichen. Danke, Vincenzo – macuser

0

diesen Versuchen Sie stattdessen:

let defaults = UserDefaults.standard 
defaults.set("group.macuser79.xxx", forKey:"username") 
defaults.synchronize() 

Shop zuzugreifen:

let defaults = UserDefaults.standard 
let username = defaults.string(forKey: "username") 

Ich gebe zu, dass ich meine eigene UserDefaults Instanz init() vor nicht versucht, aber die Standard-Instanz davon, die von iOS zu einem Singleton gemacht wird, ist eine gute Übung.

Vergessen Sie auch nicht, das optionale richtig auszupacken.

+0

Hallo, ich habe versucht mit Ihren Anweisungen, aber leider ist es immer Null – macuser

+0

Entschuldigung! Lesen Sie dies für weitere Informationen: http://StackOverflow.com/Questions/27025526/Passing-Data-To-apple-Watch-App/32002403#32002403 – dokun1

+0

Hallo, Ich habe einige Recherchen im Internet und in diesem Link der Benutzer hat das gleiche Problem, das ich auch habe. http://stackoverflow.com/questions/39808319/swift-3-ios-10-todayextension-userdefaults-always-returns-nil Es sollte ein Problem des Simulators der Apple Watch sein. Wie kann ich jetzt beheben, damit ich versuchen kann, meine App zu testen? Ich war mit nur einem aus und dann kann ich veröffentlichen. Danke, Vincenzo – macuser

0

ein:

UserDefaults(suiteName: "group.macuser79.xxx")?.set("vincenzo", forKey: "username") 

Um Zugang:

UserDefaults(suiteName: "group.macuser79.xxx")!.string(forKey: "username") 
+0

Hallo, Ich habe versucht, zu tun, was ich angegeben habe, aber leider funktioniert es nicht. An dieser Stelle denke ich, dass es ein Problem mit dem Simulator gibt, weil ich nicht weiß, was ich sonst noch denken soll. Ich werde eine Apple Watch an einen Freund versuchen, um herauszufinden, ob dies das Problem ist oder nicht. Vielen Dank für Ihre Verfügbarkeit. Vincenzo – macuser

+0

Hallo, Ich habe einige Recherchen im Internet und in diesem Link hat der Benutzer das gleiche Problem, das ich habe ich auch. http://stackoverflow.com/questions/39808319/swift-3-ios-10-todayextension-userdefaults-always-returns-nil Es sollte ein Problem des Simulators der Apple Watch sein. Wie kann ich jetzt beheben, damit ich versuchen kann, meine App zu testen? Ich war mit nur einem aus und dann kann ich veröffentlichen. Danke, Vincenzo – macuser

+0

Hallo, Ich habe einige Forschung im Internet und in diesem Link hat der Benutzer das gleiche Problem, das ich habe ich auch. http://stackoverflow.com/questions/39808319/swift-3-ios-10-todayextension-userdefaults-always-returns-nil Es sollte ein Problem des Simulators der Apple Watch sein. Wie kann ich jetzt beheben, damit ich versuchen kann, meine App zu testen? Ich war mit nur einem aus und dann kann ich veröffentlichen. Danke, Vincenzo – macuser