如何使用 WebKit 在 HTML 中显示更多 JSON 项目?

Posted

技术标签:

【中文标题】如何使用 WebKit 在 HTML 中显示更多 JSON 项目?【英文标题】:How do I display more JSON items in HTML using WebKit? 【发布时间】:2018-07-02 22:53:28 【问题描述】:

我正在使用 SwiftyJSON 构建一个新闻应用程序,并且能够正确提取数据。我还可以在 tableView 中显示标题和描述。但是,当我转到详细信息视图时,我希望能够显示提要中的完整文章摘要。

这里是提要元素:

func parse(json: JSON) 
        for article in json["articles"].arrayValue 
            let title = article["title"].stringValue
            let author = article["author"].stringValue
            let date = article["publishedAt"].stringValue
            let image = article["urlToImage"].stringValue
            let description = article["description"].stringValue

            let obj = ["title": title, "author": author, "date": date, "image": image, "description": description, ]
            news.append(obj)

        

我将数据发送到详细视图控制器如下:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
        let vc = DetailViewController()
        vc.articleSummary = news[indexPath.row]
        navigationController?.pushViewController(vc, animated: true)

然后在细节视图控制器上是代码。注释的项目是我想添加到显示中的项目:

import UIKit
import WebKit

class DetailViewController: UIViewController 

    var webView: WKWebView!
    var articleSummary: [String: String]!

    override func loadView() 
        webView = WKWebView()
        view = webView
    

    override func viewDidLoad() 
        super.viewDidLoad()

        guard articleSummary != nil else  return 

        if let description = articleSummary["description"] 
            var html = "<html>"
            html += "<head>"
            html += "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
            html += "<style> body  font-size: 150%;  </style>"
            html += "</head>"
            html += "<body>"
         // html += <h1>title</h1>
         // html += <h4>author</h4>
         // html += <p>date</p>
         // html += <img src="image"  />
            html += description
            html += "</body>"
            html += "</html>"
            webView.loadHTMLString(html, baseURL: nil)
        
    


【问题讨论】:

你是如何在你的 ViewController 上添加你的 webView 的? 你的代码有什么问题?取消注释这些行时是否会引发错误? 如果我取消注释它显示为单词而不是值的代码。 【参考方案1】:

您只需正确转义 HTML 字符串,您的数据就会显示出来。

if let description = articleSummary["description"],
   let title = articleSummary["title"],
   let author = articleSummary["author"],
   let image = articleSummary["image"],
   let date = articleSummary["date"] 
        var html = "<html>"
        html += "<head>"
        html += "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
        html += "<style> body  font-size: 150%;  </style>"
        html += "</head>"
        html += "<body>"
        html += "<h1>\(title)</h1>"
        html += "<h4>\(author)</h4>"
        html += "<p>\(date)</p>"
        html += "<img src=\"\(image)\" alt=\"\" />"
        html += description
        html += "</body>"
        html += "</html>"
    webView.loadHTMLString(html, baseURL: nil)

【讨论】:

我试过了,但每个项目都出现错误,说“使用未解析的标识符......” 您需要在 if let 语句中添加这些变量。检查我的更新答案 太棒了!非常感谢。

以上是关于如何使用 WebKit 在 HTML 中显示更多 JSON 项目?的主要内容,如果未能解决你的问题,请参考以下文章

JQuery如何实现点击查看更多,显示更多内容

Webkit 列查找可见文本的范围

如何使用 django(查询)在我的 html 中显示更多对象

在 Capybara-Webkit 中显示 @font-face 字体

在 node-webkit 中使用默认程序打开文件

WebKit