2015-08-12 1 views
0

Je voudrais enregistrer plusieurs images/vidéos dans le répertoire de documents pour une utilisation ultérieure et je comprends l'essentiel de la façon d'en enregistrer un seul, mais je ne sais pas comment enregistrer plusieurs images et les récupérer. Comment changer ce code pour récupérer tous les objets sauvegardés dans le répertoire où se trouve le fichier? J'utilise deux contrôleurs de vue pour le faire.Comment enregistrer plusieurs fichiers dans le répertoire de documents et les récupérer correctement

Voici le code pour enregistrer l'image:

NSData *videoData = [NSData dataWithContentsOfFile:moviePath];  
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory 
filePath = [documentsPath stringByAppendingPathComponent:@"image.png"]; //Add the file name 
[videoData writeToFile:filePath atomically:YES]; //Write the file 

Voici le code pour récupérer l'image:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"image.png"]; 
UIImage *img = [UIImage imageWithContentsOfFile:getImagePath]; 

Le seul problème avec le code est cela seulement obtenir l'image au la position 0 et je voudrais obtenir tous les postes.

+0

Si vous pouvez le faire pour un fichier, vous pouvez le faire pour plusieurs fichiers utilisent un simple 'pour' ... – klefevre

Répondre

0

Vous devez attribuer un nom unique à chaque fichier.

Ensuite, gardez une trace des noms d'une certaine manière.

Vous pouvez également obtenir une liste des fichiers dans le répertoire avec la méthode NSFileNamagercontentsOfDirectoryAtPath:.

0

ici est mon code pour enregistrer l'image multiple dans le tableau

let defaults = UserDefaults.standard 
     var array = NSMutableArray() 
     let i = Int(arc4random()) 

        let str = String(i).appending(".png") 



        array.insert(str, at: 0) 
        defaults.set(array, forKey: "me") 
        defaults.synchronize() 
        let fileManager = FileManager.default 
        let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(str) 

        print(paths) 

        let imageData = UIImagePNGRepresentation(YourImage) 
        fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil) 
0

Et pour récupérer l'image

let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory 
     let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask 
      let array1 = defaults.value(forKey: "me") as? NSArray as Array? 
    let paths    = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true) 
     if let dirPath   = paths.first 
     { 

     let strPic = (array1?[indexPath.row] as! String) 
      imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent(strPic! as String) as NSURL 




      cell.imgView.image = UIImage(contentsOfFile: imageURL.path!)