【问题标题】:How to save multiple files to documents directory and retrieve them properly如何将多个文件保存到文档目录并正确检索它们
【发布时间】:2015-11-05 09:10:11
【问题描述】:

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

这是保存图片的代码:

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 个位置的图像,我想获取所有位置。

【问题讨论】:

  • 如果您可以为一个文件执行此操作,您可以为多个文件执行此操作,使用简单的for...

标签: ios arrays file nsdocumentdirectory


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

      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)
    

    【讨论】:

      【解决方案3】:

      用于检索图像

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

      【讨论】:

        猜你喜欢
        • 2016-04-04
        • 2012-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-16
        • 1970-01-01
        • 2011-10-15
        相关资源
        最近更新 更多