我很难在Swift 3中加载一个图像文件.这是代码:
do {
let imageData = try Data(contentsOf: imageUrl2.asURL())
} catch {
print ("loading image file error")
}
Run Code Online (Sandbox Code Playgroud)
当前的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
Run Code Online (Sandbox Code Playgroud)
显然我已经检查过这个文件是否存在并且是有效的图像.它总是告诉我"加载图像文件错误".任何人都有在Swift 3中加载本地数据的经验?
提到的答案是使用NSData对象,可能还有Swift 2.当前Swift 3拒绝将NSData桥接到Data,这就是我必须使用Data的原因.
Saf*_*ive 11
斯威夫特 5 版本。
func loadFileFromLocalPath(_ localFilePath: String) ->Data? {
return try? Data(contentsOf: URL(fileURLWithPath: localFilePath))
}
Run Code Online (Sandbox Code Playgroud)
从本地文件加载数据您应该使用"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>)
Run Code Online (Sandbox Code Playgroud)
将纯文本作为String读取,请使用:
String(contentsOfFile: <LocalFileDirPath>)
Run Code Online (Sandbox Code Playgroud)
从文档目录中读取图像,使用:
UIImage(contentsOfFile: <LocalFileDirPath>)
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助!
我在尝试检索刚刚下载的文件时遇到了同样的问题.如果你像我一样从某个网址保存了一个文件,这应该有效:
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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19165 次 |
| 最近记录: |