Es scheint ein seltsames Problem mit iOS-Spielplätzen zu sein, bei dem NSUserDefaults
immer nil
anstelle des tatsächlichen Wertes zurückgibt.
In einem iOS-Spielplatz gibt die letzte Zeile nil
falsch zurück.
In einem OSX-Spielplatz gibt die letzte Zeile korrekt "Dies ist ein Test" zurück.
%Vor%Irgendeine Idee, warum das ist? Käfer?
Das ist nicht wirklich ein Fehler ... NSUserDefaults ist an die iOS-Sandbox-Umgebung gebunden. Spielplätze werden in dieser Umgebung nicht ausgeführt. Daher können Sie keine Dateien auf die Festplatte schreiben. Wenn Sie diesen Code in der Anwendung ausführen, wenn er über den Simulator oder das Gerät ausgeführt wird, haben Sie Zugriff auf die Sandbox-Umgebung, und NSUserDefaults gibt eine ordnungsgemäße Referenz zurück. Ich sehe aber, dass ich auf Spielplätzen einen richtigen Bezug bekomme und Werte setzen und bekommen kann, also muss hier noch etwas anderes los sein. Ich würde mich einfach nicht darauf verlassen, dass dies die Art ist, diese Art von Funktionalität aufgrund der Natur zu testen.
Beachten Sie, was passiert, wenn ich den Store synchronisiere.
Der Wert wird null, weil es nichts gibt, gegen das man bestehen könnte.
Der folgende Code funktioniert in iOS Playground Version 1.6.1 (Swift 4) :
%Vor%druckt:
%Vor%In Xcode 9.2 für iOS funktioniert es derzeit sogar, dass die UserDefaults zwischen den Wiederholungen des Spielplatzes gespeichert werden. Das hat mich zunächst irritiert, da ich erwartet hatte, dass die UserDefaults nach jedem Stopp wie gewohnt gereinigt werden würden. Also, eine Warnung: UserDefaults sind nun zwischen Wiederholungen persistent, besser daran denken, dass bei der Suche nach Fehlern, kann es Nebenwirkungen geben!
Tags und Links ios xcode swift nsuserdefaults swift-playground