将目录中的文件加载到UIIMAGE不起作用

时间:2015-04-08 22:01:27

标签: ios uiimage nsfilemanager nsurlsession nsurlsessiondownloadtask

所以我使用DownloadTask下载图像,然后将图像保存在缓存目录中,其名称仅供我自己使用:

let fileManager = NSFileManager.defaultManager()
                let documents = fileManager.URLsForDirectory(NSSearchPathDirectory.CachesDirectory, inDomains: .UserDomainMask).first as NSURL
                let fileURL = documents.URLByAppendingPathComponent("\((id)).png")
            var error: NSError?
            if !fileManager.moveItemAtURL(location, toURL: fileURL, error:       &error) {
               //already exist?
            }

如果我打印fileURL ,它会给我:file:///var/mobile/Containers/Data/Application/A5F342C0-DFFA-49C4-92C1-3A0326A8C2D2/Library/Caches/1806.png

而且我尝试加载它 - >

imagechecker.image = UIImage(contentsOfFile:"file:///var/mobile/Containers/Data/Application/A5F342C0-DFFA-49C4-92C1-3A0326A8C2D2/Library/Caches/1806.png")

它不起作用..我看到有人说串口部分可能会随着每个构建而改变,所以我也尝试了这个:

let documents = fileManager.URLsForDirectory(NSSearchPathDirectory.CachesDirectory, inDomains: .UserDomainMask).first as NSURL
    let fileURL = documents.URLByAppendingPathComponent("1797.png")
   imagechecker.image = UIImage(contentsOfFile: fileURL.absoluteString!)

不行,有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你对一般概念是正确的,问题是串口确实随每个构建而改变,所以你必须动态地创建它。

您的下载任务不是导致问题的原因。你试图加载它的方式是错误的。 如果您将打印缓存目录中的所有文件(使用后续方法),您将看到已保存文件的名称(应该与上面的downloadTask一起使用):

        var paths : NSArray = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true)

        var documentsDirectory : NSString = paths.objectAtIndex(0) as NSString

        let fileManager = NSFileManager.defaultManager()
        var fileList = fileManager.contentsOfDirectoryAtPath(documentsDirectory, error: nil)
        for var i = 0 ; i < fileList!.count ; i++ {
            var x = fileList![i] as NSString
            println(x)
        }

*您使用的额外方法^

为此,我们需要动态创建路径,而不是仅为其添加名称:

        var myPathList : NSArray = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true)

        var myPath = myPathList[0] as String
        myPath = myPath.stringByAppendingPathComponent("filenamexample.png")
        imagechecker.image = UIImage(contentsOfFile: myPath)
祝你好运!