Schreibt und liest Daten in die Eigenschaftsliste (.plist-Datei) unter Verwendung eines Modells, das den Eigenschaften PropertyListEncoder (Decoder) und Codable entspricht.
Swift: 5.0
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
}
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)
}
}
}
Ä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
}
}
Mit "Codable" und "PropertyListEncoder (Decoder)" konnten wir Datenoperationen in der Eigenschaftsliste (.plist) problemlos implementieren.
Recommended Posts