如何将多个文件保存到文档目录并正确检索它们

时间:2015-08-12 16:22:44

标签: ios arrays file nsdocumentdirectory

我想将多个图像/视频保存到文档目录中供以后使用,我得到了如何保存单个图像的要点,但我不知道如何保存多个图像并检索它们。如何更改此代码以检索保存在文件所在目录中的所有对象?我使用两个视图控制器来执行此操作。

以下是保存图片的代码:

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 

以下是检索图像的代码:

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

代码的唯一问题是这只会使图像位于第0位,而我希望获得所有位置。

3 个答案:

答案 0 :(得分:0)

您需要为每个文件指定一个唯一的名称。

然后以某种方式跟踪名称。

您还可以使用NSFileNamager方法contentsOfDirectoryAtPath:获取目录中的文件列表。

答案 1 :(得分:0)

这是我在数组中保存多个图像的代码

  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)

答案 2 :(得分:0)

用于检索图像

 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!)