Ich habe eine Struktur, die ich in UserDefaults speichern möchte. Hier ist meine Struktur
%Vor%In einem anderen ViewController habe ich eine UIButton, die an diese Struktur hängt wie
%Vor%Ich möchte, dass, wenn der Benutzer auch auf diese Schaltfläche klickt, die Struktur in UserDefaults gespeichert wird, so dass, wenn der Benutzer die App beendet und sie dann wieder öffnet, wird sie gespeichert. Wie würde ich das tun?
Wenn die Struktur nur property list konforme Eigenschaften enthält, empfehle ich, eine Eigenschaft propertyListRepresentation
und eine entsprechende init
Methode
Um ein Array von Songs in UserDefaults
write
Um das Array zu lesen
%Vor% Wenn title
und artist
niemals mutiert werden, sollten Sie die Eigenschaften als Konstanten deklarieren ( let
).
Diese Antwort wurde geschrieben, als Swift 4 im Beta-Status war. Unterdessen ist die Übereinstimmung mit Codable
die bessere Lösung.
Wenn Sie nur versuchen, dieses Array von Songs in UserDefaults zu speichern und nichts Besonderes zu verwenden: -
%Vor%Wenn Sie ein schweres Array speichern, empfehle ich Ihnen, das NSCoding-Protokoll oder das Codable Protocol in swift 4
zu verwendenBeispiel für das Codierungsprotokoll: -
%Vor%Von hier:
Ein Standardobjekt muss eine Eigenschaftsliste sein, dh eine Instanz von (oder für Sammlungen, eine Kombination von Instanzen von): NSDaten , NSString , NSNummer , NSDatum , NSArray , oder NSDictionary . Wenn Sie einen anderen Objekttyp speichern möchten, sollten Sie ihn normalerweise archivieren, um eine Instanz von NSData zu erstellen.
Sie müssen NSKeydArchiver
verwenden. Dokumentation finden Sie hier und Beispiele hier und hier .
Tags und Links ios swift nsuserdefaults struct