0

也许是一个罕见的问题,但我正在学习 Swiftui。我正在尝试使用 XMLMapper 解析来自 Alamofire 的 XML 结果,该结果在 Storyboard 中按预期工作。我可以在 UITableviewController 中显示数据。

问题是:如何在 SwiftUI 中将 XMLMapper 对象的结果显示到表视图(列表)?

在我在情节提要模式下使用的代码下方。

提前致谢!帕特里克

import UIKit
import Alamofire
import XMLMapper
import SwiftKeychainWrapper

class AllLines: UITableViewController {


    let redirector = Redirector(behavior: .doNotFollow)
    let requestUrl = "https://\(KeychainWrapper.standard.string(forKey: "KeychainServer") ?? ""):443"
        
    var Rows: [Row] = []

    override func viewDidLoad() {
        super.viewDidLoad()
        
        GetLines()
    }

    // MAP CARD DETAILS //
    class Result: XMLMappable {
        var nodeName: String!

        var error: String?
        var rowset: Rowset?

        required init?(map: XMLMap) {}

        func mapping(map: XMLMap) {
            error <- map.attributes["error"]
            rowset <- map["ROWSET"]
        }
    }

    class Rowset: XMLMappable {
        var nodeName: String!

        var rows: [Row]?

        required init?(map: XMLMap) {}

        func mapping(map: XMLMap) {
            rows <- map["ROW"]
        }
    }

    class Row: XMLMappable {
        var nodeName: String!

        var name: String?
        var hostname: String?
        var lineid: String?

        required init?(map: XMLMap) {}

        func mapping(map: XMLMap) {
            name <- map["NAME"]
            hostname <- map["HOSTNAME"]
            lineid <- map["LINEID"]
        }
    }
    //MAP CARD DETAILS//

    func GetLines() {

        class GetAllPersonsQuery: XMLMappable {
            var nodeName: String!

            var sql: String?

            init() {}

            required init?(map: XMLMap) {}

            func mapping(map: XMLMap) {
                sql <- (map["sql"], XMLCDATATransform())
            }
        }

        let getallpersonsquery = GetAllPersonsQuery()
        getallpersonsquery.nodeName = "query"
        getallpersonsquery.sql = "select name, hostname, lineid from line"


        AF.request(requestUrl, method: .post, parameters: getallpersonsquery.toXML(), encoding: XMLEncoding.default)
            .redirect(using: redirector)
            .responseXMLObject { (response: DataResponse<Result, AFError>) in
                switch response.result {
                case .success(let value):
                    debugPrint(value)
                    print("AF-Success")

                    self.Rows = value.rowset?.rows ?? []
                    self.tableView.reloadData()

                    debugPrint(response)

                case .failure(let error):
                    print("AF-Error")
                    print(error)
                }
            }

    }
4

0 回答 0