#Utiliser de vrais documents

Il existe plusieurs manières d’ajouter des documents à notre application, nous allons voir les deux principales.

Sur cette page nous allons voir comment ajouter des documents à notre application à la compilation.

La seconde manière est d’ajouter des documents depuis le téléphone. Et nous verrons cela dans un autre exercice.

#Ajouter des documents

depuis XCode

  1. Téléchargez des images de votre choix sur internet. Personnellement je vais sur Unsplash pour télécharger des images libres de droits, mais tentez un imgur, reddit, imgflip, etc.
  2. Glissez les images dans la hierarchie de fichiers de votre projet Xcode. Pas dans Assets
  3. Pensez à cocher la case Copy items if needed pour que les images soient copiées dans votre projet.

Les images sont disponibles dans votre application, elles seront représentées dans un objet Bundle qui contient une référence aux fichiers non exécutables de votre application.

💡 Nous allons pouvoir accéder au Bundle depuis le code pour remplir notre TableView.

#Afficher les documents

Apple nous fourni déjà pas mal d’outils pour accéder et manipuler des fichiers grâce à la bibliothèque Foundation.

Vous aurez besoin de :

  • Bundle
  • FileManager

Pour récupérer les informations d’un fichier, comme sa taille, son nom et son type.

// A mettre dans votre DocumentTableViewController
func listFileInBundle() -> [DocumentFile] {
        
        let fm = FileManager.default
        let path = Bundle.main.resourcePath!
        let items = try! fm.contentsOfDirectory(atPath: path)
        
        var documentListBundle = [DocumentFile]()
    
        for item in items {
            if !item.hasSuffix("DS_Store") && item.hasSuffix(".jpg") {
                let currentUrl = URL(fileURLWithPath: path + "/" + item)
                let resourcesValues = try! currentUrl.resourceValues(forKeys: [.contentTypeKey, .nameKey, .fileSizeKey])
                   
                documentListBundle.append(DocumentFile(
                    title: resourcesValues.name!,
                    size: resourcesValues.fileSize ?? 0, 
                    imageName: item,
                    url: currentUrl,
                    type: resourcesValues.contentType!.description)
                )
            }
        }
        return documentListBundle
    }

#🔧 Exercice 1

  • Faites fonctionner ce code avec votre TableView
  • Expliquez le code fourni (en mettant un commentaire dans le code au dessus de chaque ligne)
  • Lister les fichiers de Bundle.main, mettre la liste des fichiers dans un tableau de type [DocumentFile] et faites fonctionner le TableView avec cette liste.

A la fin de cet exercice vous devriez avoir quelque chose comme ça :

#Aide

  • Utilisez vos connaissances sur les TableView, les listes et les controles de flux pour afficher les données dans le TableView.

#Utiliser les documents du téléphone

Voir l’exercice avec UIDocumentPicker à faire plus tard.