我很难在Swift 3中加载图像文件。 这是代码:
do {
let imageData = try Data(contentsOf: imageUrl2.asURL())
} catch {
print ("loading image file error")
}
当前的Url字符串是:
file:///Users/veikoherne/Library/Developer/CoreSimulator/Devices/889A08D5-B8CC-458C-99FF-643A4BA1A806/data/Containers/Data/Application/F64ED326-7894-4EE7-AA3B-B1BB10DF8259/Documents/img2017-03-23 17:39:24.jpg
显然我已经检查过这个文件是否存在并且是有效的图像。它总是告诉我"加载图像文件错误"。任何人都有在Swift 3中加载本地数据的经验吗?
提到的答案是使用NSData对象,可能还有Swift 2.当前的Swift 3拒绝将NSData桥接到数据,这就是我必须使用Data的原因。
答案 0 :(得分:7)
从本地文件加载数据,你应该使用" contentsOfFile:"方法
因此,在阅读数据的情况下,您可以使用:
Data(contentsOf: <URL>, options: <Data.ReadingOptions>)
将纯文本作为字符串读取,使用:
String(contentsOfFile: <LocalFileDirPath>)
从文档目录中读取图像,使用:
UIImage(contentsOfFile: <LocalFileDirPath>)
希望这会有所帮助!
答案 1 :(得分:6)
我在尝试检索刚刚下载的文件时遇到了同样的问题。如果你像我一样从某个网址保存了一个文件,那么这应该可行:
let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
let localUrl = documentDirectory.appendingPathComponent("somefile.txt")
if FileManager.default.fileExists(atPath: localUrl.path){
if let cert = NSData(contentsOfFile: localUrl.path) {
return cert as Data
}
}
答案 2 :(得分:0)
Swift 5版本。
func loadFileFromLocalPath(_ localFilePath: String) ->Data? {
return try? Data(contentsOf: URL(fileURLWithPath: localFilePath))
}