无法使用UIImage或NSData加载图像

时间:2015-06-11 08:35:54

标签: ios swift uiimage nsdata

我正在编写Swift应用程序,我无法使用UIImage(contentsOfFile: imgPath)NSData(contentsOfFile: imgPath)

加载保存在应用程序中的图像
private func loadData() {
    println("load DATA DANGEROUS")
    let (dangerous, err) = SD.executeQuery("SELECT * FROM Dangerous")
    if err == nil && !dangerous.isEmpty {
        var tabPhoto : [DangerousImage] = []
        for d in dangerous {
            let desc = d["description"]!.asString()!
            let idDangerous = d["id"]!.asInt()!
            println("iddangerous : \(idDangerous)")
            let (photos, error) = SD.executeQuery("SELECT * FROM Photo WHERE idDangerous = ?", withArgs: [idDangerous])
            if error == nil {
                for photo in photos {
                    let imgPath = photo["photoPath"]!.asString()!
                    println(imgPath)
                    let uimage = UIImage(contentsOfFile: imgPath)  // fatal error: unexpectedly found nil while unwrapping an Optional value
                    tabPhoto.append(DangerousImage(img: uimage!, path: imgPath))
                }
            }
            println("add ENTRY")
            self.tabEntry.append(Entry(descript: desc, tab: tabPhoto))
        }
    }
    println("TAB ENTRY : \(tabEntry)")
}

我的照片存在于此路径中:/var/mobile/Containers/Data/Application/...ID-APP.../Documents/images/JPEG_201506162_101128_IOS_99804574.jpg

感谢您的帮助。

Ysee

1 个答案:

答案 0 :(得分:1)

从我可以在您的代码中看到,您正在存储数据库中图像的完整路径,例如。 "在/ var /移动/容器/数据/应用/ ... ID-APP ... /文档/图像/ JPEG_201506162_101128_IOS_99804574.jpg" 。从iOS8开始,文件夹结构发生了变化 - 每次更新应用程序或在开发过程中安装新版本时,路径中的UDID都会发生变化。这就是为什么要存储图像的相对路径,例如。 " / images / JPEG_201506162_101128_IOS_99804574.jpg" 然后使用NSSearchPathForDirectoriesInDomains方法获取Documents目录。