从iOS错误的Documents文件夹内的文件夹保存并获取图像

星际霸主

在应用程序启动时,我正在Documents目录中创建一个文件夹(如果尚未存在)。这很棒!

我正在下载一些图像,并希望保存它们以备后用。我的问题是我的代码似乎将文件存储在文档目录中,该目录与下一次应用程序启动时的目录不同。我知道自iOS8起,文件目录可以在启动之间更改。因此,我总是在检索Documents文件夹的路径。有人可以回答我为什么此代码无法正确获取图像的路径吗?

func requestImage(let url: String,let isbn: String, numberInRow: Int){
    var documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
    documentsPath.appendContentsOf("/bookImages")
    print("Image folder path is: \(documentsPath)")
///var/mobile/Containers/Data/Application/E6B66A15-F166-46FE-A577-9B0D911F5C92/Documents/bookImages

    let pathComponent = isbn.stringByAppendingString(".jpg")
        print("Suggested filename: \(pathComponent)") //1234567891234.jpg

        let imagePath = documentsPath.stringByAppendingString("/\(pathComponent)")
        print("Image to be saved at: \(imagePath)")
// /var/mobile/Containers/Data/Application/E6B66A15-F166-46FE-A577-9B0D911F5C92/Documents/bookImages/9788202350420.jpg
        if (data != nil){
            NSFileManager.defaultManager().createFileAtPath(imagePath, contents: data!, attributes: ["YES" : "NSURLIsExcludedFromBackupKey"])

            self.books[numberInRow].setValue(pathComponent, forKey: "imageurl")
        }



    }

当我想显示这些图像时,我在视图控制器中有这个图像

let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
let imageFolderPath = documentsPath.stringByAppendingString("/bookImages")


if let image = bookData.valueForKey("imageurl") as? String
            {
                print("Imagepath: \(self.imageFolderPath)/\(image)")
// /var/mobile/Containers/Data/Application/DB1F6FE9-1071-41A6-9E87-2A3D32ECD2B9/Documents/bookImages/9788202350420.jpg
let imagePath = self.imagePath.stringByAppendingString("/\(image)")

                reuseableCell.bookCover.image = UIImage(contentsOfFile: imagePath)
            }

我删除了很多不相关的代码。为什么找不到要显示的图像?

如果有人理解错误代码,则在这里:

BOMStream BOMStreamWithFileAndSys(int, off_t, size_t, int, char *, BomSys *): read: No such file or directory

编辑:在应用程序启动时,我正在Documents / bookImages中搜索文件,并且文件在那里。

let paths: NSArray = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true)
    if let documentDirectory = paths.firstObject{
        do{
            var path = documentDirectory as! String
            path.appendContentsOf("/bookImages")

            let documents = try NSFileManager.defaultManager().contentsOfDirectoryAtPath(path)

            for files in documents {
                let urlForm = NSURL.fileURLWithPath((path) + "/" + files)

                do{
                    try print("\(files): \(urlForm.resourceValuesForKeys([NSURLIsExcludedFromBackupKey])), with filepath: \(urlForm)")
                    //Prints out folder and files in the desired location

                } catch let error as NSError{
                    print("Can't find key: \(error)")
                }

            }

        }catch let error as NSError{
            print("Can't retrieve contents: \(error)")
        }
    }


9788202350420.jpg: ["NSURLIsExcludedFromBackupKey": 0], with filepath:    file:///var/mobile/Containers/Data/Application/DB7BA523-6F75-42CF-92E6- ED2AF171D1AA/Documents/bookImages/9788202350420.jpg
9788203193538.jpg: ["NSURLIsExcludedFromBackupKey": 0], with filepath: file:///var/mobile/Containers/Data/Application/DB7BA523-6F75-42CF-92E6-ED2AF171D1AA/Documents/bookImages/9788203193538.jpg
9788203254703.jpg: ["NSURLIsExcludedFromBackupKey": 0], with filepath: file:///var/mobile/Containers/Data/Application/DB7BA523-6F75-42CF-92E6-ED2AF171D1AA/Documents/bookImages/9788203254703.jpg
鲁肯尼斯

您可以在类的顶部将路径变量初始化为全局变量,然后在requestImage方法中对其进行修改。

然后,当您要检索这些图像时,可以使用相同的变量名来确保它是完全相同的路径。

编辑*我认为您可能需要读取一些NSData代替。您可以使用UIImagePNGRepresentation或UIImageJPEGRepresentation将文件写入文档目录。我在这里找到了一个教程

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将高清图像从Alasset保存到iOS中的Documents文件夹

来自分类Dev

获取文件夹内图像的最小宽度

来自分类Dev

如何获取文件夹内图像的注释元数据

来自分类Dev

如何通过文件夹iOS从资产获取图像

来自分类Dev

如何通过文件夹iOS从资产获取图像

来自分类Dev

SSIS从共享文件夹获取图像

来自分类Dev

从本地文件夹获取图像列表

来自分类Dev

在文件夹内绘制每个图像

来自分类Dev

文件夹内的mysql错误

来自分类Dev

获取文件的文件夹。

来自分类Dev

.Net核心在静态文件夹(www)中添加文件夹并保存图像文件

来自分类Dev

从文件夹获取图像url仅过滤文件夹中的图像

来自分类Dev

从Documents Directory Swift iOS的子文件夹中获取文件列表

来自分类Dev

将图像保存在iOS相册(我的文件夹)中,并保存图像URL

来自分类Dev

使用PHP将图像保存到指定的文件夹和子文件夹吗?

来自分类Dev

获取文件夹名称

来自分类Dev

在Powershell中获取用户的Documents文件夹

来自分类Dev

保存文件之前从SaveFileDialog获取文件夹路径

来自分类Dev

从子文件夹和文件夹标题中获取图像

来自分类Dev

React Native iOS从应用程序的Documents文件夹读取图像

来自分类Dev

在iOS的documents文件夹中创建多个目录

来自分类Dev

从文件夹中获取多个图像并将图像名称保存到json数组

来自分类Dev

从资源文件夹JAVA获取文件夹

来自分类Dev

从资产文件夹获取文件夹列表

来自分类Dev

访问获取共享文件夹的子文件夹

来自分类Dev

忽略文件夹内的文件夹

来自分类Dev

Dockerfile:文件夹内的COPY文件夹

来自分类Dev

如何从dll项目内的bin文件夹中获取文件夹位置?

来自分类Dev

如何获取某个文件夹内每个文件夹的名称

Related 相关文章

  1. 1

    如何将高清图像从Alasset保存到iOS中的Documents文件夹

  2. 2

    获取文件夹内图像的最小宽度

  3. 3

    如何获取文件夹内图像的注释元数据

  4. 4

    如何通过文件夹iOS从资产获取图像

  5. 5

    如何通过文件夹iOS从资产获取图像

  6. 6

    SSIS从共享文件夹获取图像

  7. 7

    从本地文件夹获取图像列表

  8. 8

    在文件夹内绘制每个图像

  9. 9

    文件夹内的mysql错误

  10. 10

    获取文件的文件夹。

  11. 11

    .Net核心在静态文件夹(www)中添加文件夹并保存图像文件

  12. 12

    从文件夹获取图像url仅过滤文件夹中的图像

  13. 13

    从Documents Directory Swift iOS的子文件夹中获取文件列表

  14. 14

    将图像保存在iOS相册(我的文件夹)中,并保存图像URL

  15. 15

    使用PHP将图像保存到指定的文件夹和子文件夹吗?

  16. 16

    获取文件夹名称

  17. 17

    在Powershell中获取用户的Documents文件夹

  18. 18

    保存文件之前从SaveFileDialog获取文件夹路径

  19. 19

    从子文件夹和文件夹标题中获取图像

  20. 20

    React Native iOS从应用程序的Documents文件夹读取图像

  21. 21

    在iOS的documents文件夹中创建多个目录

  22. 22

    从文件夹中获取多个图像并将图像名称保存到json数组

  23. 23

    从资源文件夹JAVA获取文件夹

  24. 24

    从资产文件夹获取文件夹列表

  25. 25

    访问获取共享文件夹的子文件夹

  26. 26

    忽略文件夹内的文件夹

  27. 27

    Dockerfile:文件夹内的COPY文件夹

  28. 28

    如何从dll项目内的bin文件夹中获取文件夹位置?

  29. 29

    如何获取某个文件夹内每个文件夹的名称

热门标签

归档