Ich verwende NSUserDefaults, um Schlüssel/Wert-Paare in meiner Anwendung zu speichern. Unten ist der Beispielcode:NSUserDefaults unzuverlässig?
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let ud = NSUserDefaults.standardUserDefaults()
if !(ud.boolForKey("launched_before")) {
print("first_launch")
ud.setBool(true, forKey: "launched_before")
} else {
print("not_first_launch")
}
}
Das erste Mal, dass ich die Anwendung starten, druckt es „first_launch“ wie erwartet, und das zweite Mal, dass ich die Anwendung zu starten, gibt es „not_first_launch“ auch wie erwartet. Wenn ich jedoch die Anwendung erneut starte, indem ich die Schaltfläche Stopp und Ausführen im Xcode nach ein paar Mal (vielleicht 4 bis 20 Mal) drücke, gibt boolForKey("launched_before")
false zurück, was falsch ist.
Ich teste auf meinem Gerät (iPhone 6, iOS 9.3.1) und Xcode 7.3.
Kann mir jemand helfen?
das könnte helfen! –
Aber wie kommt es das zweite Mal, es funktioniert wie erwartet, was bedeutet, Boolean Setting ist erfolgreich, oder? – TangZijian
das wird Ihnen helfen, den NSUserDefault zu verstehen, wie es funktioniert: http://www.accella.net/knowledgebase/nsuserdefaults-some-pretty-good-practices/ –