从Swift 3

时间:2017-03-23 17:10:58

标签: ios swift swift3

我很难在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的原因。

3 个答案:

答案 0 :(得分:7)

从本地文件加载数据,你应该使用" contentsOfFile:"方法

参考链接:https://www.hackingwithswift.com/example-code/strings/how-to-load-a-string-from-a-file-in-your-bundle

因此,在阅读数据的情况下,您可以使用:

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