【发布时间】:2018-04-30 04:46:35
【问题描述】:
我想将我的本地 html 文件加载到字符串变量中。我不知道该怎么做。请帮我。 我在下面找到了链接,但它是从在线 url 加载的。 Swift & UIWebView element to hide
【问题讨论】:
标签: html ios string swift uiwebview
我想将我的本地 html 文件加载到字符串变量中。我不知道该怎么做。请帮我。 我在下面找到了链接,但它是从在线 url 加载的。 Swift & UIWebView element to hide
【问题讨论】:
标签: html ios string swift uiwebview
将 html 复制到您的项目目录并使用此代码:
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
var htmlFile = NSBundle.mainBundle().pathForResource("MyHtmlFile", ofType: "html")
var htmlString = try? String(contentsOfFile: htmlFile!, encoding: NSUTF8StringEncoding)
webView.loadHTMLString(htmlString!, baseURL: nil)
}
【讨论】:
let htmlFile = Bundle.main.path(forResource: "default", ofType: "html")。该文件也是编译包的一部分,位于 Resources 文件夹中。但是当我尝试获取文件的内容时,它会产生错误。我还尝试打印 htmlFile 的值,展开后,它返回 nil...,所以我的问题出在其他地方...知道我做错了什么吗?
let bundle = Bundle(for: MyView.self) let url = bundle.url(forResource:"default", withExtension:"html") let request = URLRequest(url: url!) self.webView.load(request)
在 Swift 3 中:
let htmlFile = Bundle.main.path(forResource:"MyHtmlFile", ofType: "html")
let htmlString = try? String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8)
webView.loadHTMLString(htmlString!, baseURL: nil)
我建议使用optional chaining,而不是像上面那样强制解开htmlString。
【讨论】:
您可以编写一些这样的实用方法并获取 html 字符串并将其加载到 webview。我在这里使用了 URL 方法
private func getHTML() -> String {
var html = ""
if let htmlPathURL = Bundle.main.url(forResource: "test", withExtension: "html"){
do {
html = try String(contentsOf: htmlPathURL, encoding: .utf8)
} catch {
print("Unable to get the file.")
}
}
return html
}
【讨论】:
Swift 3 语法:
guard
let file = Bundle.main.path(forResource: "agreement", ofType: "html"),
let html = try? String(contentsOfFile: file, encoding: String.Encoding.utf8)
else {
return
}
webView.loadHTMLString(html, baseURL: nil)
【讨论】:
简单回答
let indexPath = Bundle.main.path(forResource: "index", ofType: "html", inDirectory: "/")
if let indexPath = indexPath
{
do
{
let htmlContent = try String(contentsOfFile: indexPath, encoding: String.Encoding.utf8)
let base = Bundle.main.resourceURL
self.webView.loadHTMLString(htmlContent, baseURL: base)
}
catch let err as NSError
{
print(err.debugDescription)
}
}
【讨论】: