Speichern Struct zu UserDefaults
Ich habe eine struct, die ich speichern möchten UserDefaults. Hier ist mein struct
struct Song {
var title: String
var artist: String
}
var songs: [Song] = [
Song(title: "Title 1", artist "Artist 1"),
Song(title: "Title 2", artist "Artist 2"),
Song(title: "Title 3", artist "Artist 3"),
]
In einem anderen ViewController, ich habe einen UIButton, der anfügt, diese Struktur wie
@IBAction func likeButtonPressed(_ sender: Any) {
songs.append(Song(title: songs[thisSong].title, artist: songs[thisSong].artist))
}
Ich will es so, dass, wenn der Benutzer klickt auf diese Schaltfläche auch, es speichert die struct zu UserDefaults, so dass, wenn der Benutzer schließt die app und dann öffnet es agian, es ist gespeichert. Wie kann ich dies tun?
InformationsquelleAutor der Frage Jacob Cavin | 2017-07-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Swift 4 das ist ziemlich trivial. Machen Sie Ihre struct kodierbar einfach durch die Kennzeichnung als übernahme des kodierbar Protokoll:
Nun beginnen wir mit einigen Daten:
Hier ist, wie man das in die UserDefaults:
Und hier ist, wie man es wieder später:
InformationsquelleAutor der Antwort matt
Wenn das struct enthält nur die Eigenschaft-Liste-konform Eigenschaften empfehle ich, das hinzufügen einer Eigenschaft
propertyListRepresentation
und eine entsprechendeinit
MethodeSpeichern eine Reihe von songs zu
UserDefaults
schreibenLesen der array -
Wenn
title
undartist
nie mutiert betrachten Sie deklarieren die Eigenschaften, die als Konstanten (let
) .Diese Antwort geschrieben wurde, während Swift 4 wurde im beta-status. Mittlerweile konform zu
Codable
ist die bessere Lösung.InformationsquelleAutor der Antwort vadian
Dies ist mein UserDefaults Erweiterungum zu bekommen kodierbar Objekt in UserDefaults
InformationsquelleAutor der Antwort YannickSteph
Wenn Sie nur versuchen, zu retten, diese Reihe von songs in den UserDefaults und nichts ausgefallenes verwenden:-
Wenn Sie die Speicherung einer schweren array, schlage ich vor, Sie gehen mit NSCoding-Protokoll oder das kodierbare Protocol in swift 4
Beispiel der coding-Protokoll:-
InformationsquelleAutor der Antwort Dark Innocence
Vom hier:
Müssen Sie
NSKeydArchiver
. Die Dokumentation finden Sie hier und Beispiele hier und hier.InformationsquelleAutor der Antwort Valdmer