Implementieren Sie das Schreiben und Lesen in die Eigenschaftsliste (.plist) in Swift

Schreibt und liest Daten in die Eigenschaftsliste (.plist-Datei) unter Verwendung eines Modells, das den Eigenschaften PropertyListEncoder (Decoder) und Codable entspricht.

Annahme

Swift: 5.0

Implementierung

Modell vorbereiten

Erstellen Sie ein Modell der Daten, die Sie in der Eigenschaftsliste speichern möchten, in einer Form, die "Codierbar" entspricht. Dieses Mal verwenden wir als Beispiel "Buch", das einen Titel und einen Autorennamen als Elemente enthält, als Modell.

Book.swift


struct Book: Codable {
    var title: String
    var writerName: String
}

Daten schreiben

Dateivorgänge werden mit "FileManager" ausgeführt. Sie können in die Eigenschaftsliste schreiben, indem Sie das zuvor erstellte Modell mit "PropertyListEncoder" codieren.

BookManager.swift


class BookManager {
    //URL-Pfad der zu verarbeitenden Eigenschaftsliste
    static private var plistURL: URL {
        let documents = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
        return documents.appendingPathComponent("book.plist")
    }

    static func write(book: Book) {
        let encoder = PropertyListEncoder()
        //Codieren Sie die Daten, die Sie speichern möchten
        guard let data = try? encoder.encode(book) else { return }
        //Überschreiben, wenn die Eigenschaftsliste bereits vorhanden ist. Wenn nicht, erstellen Sie eine neue
        if FileManager.default.fileExists(atPath: plistURL.path) {
            try? data.write(to: plistURL)
        } else {
            FileManager.default.createFile(atPath: plistURL.path, contents: data, attributes: nil)
        }
    }
}

Daten lesen

Ähnlich wie beim Schreiben von Daten werden Dateivorgänge mit "FileManager" ausgeführt. Die aus der Eigenschaftsliste gelesenen Daten werden mit dem PropertyListDecoder in das Buchmodell decodiert.

BookManager.swift


class BookManager {
    //Kürzung//

    static func load() -> Book {
        let decoder = PropertyListDecoder()
        //Lesen Sie Daten aus der Zieleigenschaftsliste und dekodieren Sie sie
        guard let data = try? Data.init(contentsOf: plistURL), 
              let book = try? decoder.decode(Book.self, from: data) else { 
              return Book(title: "", writerName: "")
        }
        return book
    }
}

Am Ende

Mit "Codable" und "PropertyListEncoder (Decoder)" konnten wir Datenoperationen in der Eigenschaftsliste (.plist) problemlos implementieren.

Referenz

Recommended Posts

Implementieren Sie das Schreiben und Lesen in die Eigenschaftsliste (.plist) in Swift
Lesen und Schreiben von GZIP-Dateien in Java
Eigenschaftslesung in POJO
So implementieren Sie UICollectionView mit Code nur in Swift
Ich habe versucht, C # zu kauen (Dateien lesen und schreiben)
Versuchen Sie, Yuma in Java zu implementieren
Wie Bean-Eigenschaften Anforderungsparameter im Listenstil in Spring binden
(Für Super-Anfänger) Getter / Setter und Eigenschaft, in D-Sprache zu denken
Kürzen Sie die UUID in Swift auf base64.
So implementieren Sie Suchfunktionen in Rails
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
Versuchen Sie, n-ary Addition in Java zu implementieren
[Java] Lesen und Schreiben von Dateien mit OpenCSV
Ändern Sie die Liste <Optional <T >> in Java in Optional <Liste <T >>
So erzwingen Sie Codierungskonventionen in Java
So implementieren Sie Ranking-Funktionen in Rails
Unterschied zwischen Arrylist und verknüpfter Liste in Java
[Swift5] So implementieren Sie Animationen mit "lottie-ios"
So implementieren Sie die asynchrone Verarbeitung in Outsystems
So überschreiben Sie Firebase-Daten mit Swift
Von Java nach C und von C nach Java in Android Studio
Schnelle Anfänger versuchten, Mikrowellenlogik zu implementieren!
Hex und UIColor wechselseitige Konvertierung mit Swift
So beheben Sie einen Absturz beim Löschen von Realm-Daten in der Liste der schnellen Benutzeroberfläche