wake-up-neo.net

iOS 10, NSUserDefaults funktioniert nicht

Ich versuche, Werte in/von [NSUserDefaults standardUserDefaults] zu schreiben/zu lesen, aber es scheint nicht zu funktionieren. Mein Code lautet:

[[NSUserDefaults standardUserDefaults] setObject:@"sampleString" forKey:@"sampleKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSString *defaultsValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"sampleKey"];
return defaultsValue;

Dieser Code gibt nil für Xcode 8.0 beta und iPhone 6s (10.0), aber sampleString für Xcode 8.0 beta und iPhone 6s (9.1) zurück

Ich teste meine App mit den neuen Systemen. Mache ich etwas falsch? Oder gibt es dafür einen Workaround? Oder ist es nur eine "Beta" -Ausgabe?

17
antonio

Ich hatte gerade das gleiche Problem. Es scheint ein Problem mit NSUserDefaults zu geben, wenn zuerst der Simulator iOS 8 oder 9 und dann der iOS10-Simulator ausgeführt wird. Beim Neustart des Mac wurde das Problem für mich gelöst.

25
b_ray

Dies war ein Fehler mit dem iOS-Simulator, der mit Xcode 8 Beta 1 geliefert wurde. Dieser Fehler wurde in Beta 2 behoben:

In Xcode 8 Beta 2 - IDE gelöst

Simulator

  • NSUserDefaults funktionieren im iOS 10-Simulator korrekt, unabhängig davon, ob Sie .__ haben. zuvor den iOS 8- oder iOS 9-Simulator gebootet. (25974372) 

Versionshinweise zu Xcode 8 Beta 2

Aktualisieren Sie auf Xcode 8 Beta 2, damit Sie Ihren Host Mac nicht jedes Mal neu starten müssen.

5
JAL

Aktualisieren:

Wenn der Datenschutz aktiviert ist, kann synchronize auch fehlschlagen, wenn eine Anwendung in den Hintergrund wechselt.


Wir haben dieses Problem auf einem echten Gerät , auf dem iOS 10.1.1 ausgeführt wird. Der alte Wert konnte gelesen werden, die neue Änderung kann jedoch nicht auf der Festplatte gespeichert werden. Die synchronize-Methode schlägt immer fehl.

Ein Neustart des Geräts kann dieses Problem lösen.

3
BB9z

Ich hatte gerade das gleiche Problem. Es scheint ein Problem mit NSUserDefaults zu geben, wenn zuerst der iOS 8- oder 9-Simulator und dann der iOS 10-Simulator ausgeführt wird. Der Neustart des Macs hat das Problem für mich gelöst . Shareeditflag Bestätigt. Den Simulator zu schließen und wieder zu öffnen, hat nicht funktioniert, aber ein Neustart hat das für mich behoben.

Laut Apple ( Apple link ) WWDC Seed: Das Ausführen mehrerer iOS-Simulatoren kann dazu führen, dass NSUserDefaults nicht funktioniert. Wenn Sie einen iOS 8- oder 9-Simulator gefolgt von einem iOS 10-Simulator ausführen, wird NSUserDefaults nicht mehr im Simulator ausgeführt. Sie können dies umgehen, indem Sie den Host-Mac neu starten.

1
wg_hjl