Implémenter l'écriture et la lecture dans la liste des propriétés (.plist) dans Swift

Écrit et lit des données dans la liste des propriétés (fichier .plist) en utilisant un modèle conforme à «PropertyListEncoder (Decoder)» et «Codable».

supposition

Swift: 5.0

la mise en oeuvre

Préparer le modèle

Créez un modèle des données que vous souhaitez enregistrer dans la liste des propriétés sous une forme conforme à «Codable». Cette fois, à titre d'exemple, utilisons Book, qui a un titre et un nom d'auteur comme éléments, comme modèle.

Book.swift


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

Écrire des données

Les opérations sur les fichiers sont effectuées à l'aide de FileManager. Vous pouvez écrire dans la liste des propriétés en codant le modèle préparé précédemment en utilisant PropertyListEncoder.

BookManager.swift


class BookManager {
    //Chemin URL de la liste des propriétés à gérer
    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()
        //Encodez les données que vous souhaitez enregistrer
        guard let data = try? encoder.encode(book) else { return }
        //Remplacez si la liste des propriétés existe déjà. Sinon, créez-en un nouveau
        if FileManager.default.fileExists(atPath: plistURL.path) {
            try? data.write(to: plistURL)
        } else {
            FileManager.default.createFile(atPath: plistURL.path, contents: data, attributes: nil)
        }
    }
}

Lire les données

Comme pour l'écriture de données, les opérations sur les fichiers sont effectuées à l'aide de FileManager. Les données lues dans la liste des propriétés sont décodées dans le modèle Book en utilisant PropertyListDecoder.

BookManager.swift


class BookManager {
    //réduction//

    static func load() -> Book {
        let decoder = PropertyListDecoder()
        //Lire les données de la liste des propriétés de destination et les décoder
        guard let data = try? Data.init(contentsOf: plistURL), 
              let book = try? decoder.decode(Book.self, from: data) else { 
              return Book(title: "", writerName: "")
        }
        return book
    }
}

À la fin

En utilisant Codable et PropertyListEncoder (Decoder), nous avons pu facilement implémenter des opérations de données sur Property List (.plist).

référence

Recommended Posts

Implémenter l'écriture et la lecture dans la liste des propriétés (.plist) dans Swift
Lire et écrire des fichiers gzip en Java
Lecture de propriété dans POJO
Comment implémenter UICollectionView avec du code uniquement dans Swift
J'ai essayé de mâcher C # (lire et écrire des fichiers)
Essayez d'implémenter Yuma en Java
Comment les propriétés de bean lient les paramètres de requête de style liste dans Spring
(Pour les super débutants) Getter / setter et propriété pour penser en langage D
Raccourcissez l'UUID en base64 dans Swift.
Comment implémenter la fonctionnalité de recherche dans Rails
Comment implémenter le calcul de la date en Java
Comment implémenter le filtre de Kalman par Java
Essayez d'implémenter l'ajout n-aire en Java
[Java] Lecture et écriture de fichiers avec OpenCSV
Remplacez List <Optional <T >> par Optional <List <T >> en Java
Comment appliquer les conventions de codage en Java
Comment implémenter la fonctionnalité de classement dans Rails
Différence entre les listes d'arry et les listes liées en Java
[Swift5] Comment mettre en œuvre une animation à l'aide de "lottie-ios"
Comment implémenter le traitement asynchrone dans Outsystems
Comment écraser les données Firebase avec Swift
De Java à C et de C à Java dans Android Studio
Les débutants rapides ont essayé d'implémenter la logique micro-ondes!
Conversion mutuelle Hex et UIColor avec Swift
Comment réparer un crash lors de la suppression de données de royaume dans la liste de l'interface utilisateur Swift