gpt4 book ai didi

swift - SWXMLHash 的反序列化错误

转载 作者:行者123 更新时间:2023-11-28 15:21:51 24 4
gpt4 key购买 nike

我有以下 XML 结构(这是一个精简的示例):

<Root>
<SomeData>Some value</SomeData>
...
<ClientInfo>
<Client>MD</Client>
<Name>Massive Dynamic</Name>
</ClientInfo>
</Root>

使用以下模型:

struct ClientInfo : XMLElementDeserializable {
let Client : String
let Name : String

static func deserialize(_ node: XMLIndexer) throws -> ClientInfo {
return try ClientInfo(
Client: node["Client"].value(),
Name: node["Name"].value()
)
}
}

我正在尝试按如下方式解析 XML:

let clientInfo : ClientInfo? = try? xml.children[0]["ClientInfo"].value()

但是,它一直失败并出现 ImplementationIsMissing 错误,就好像我的自定义 deserialize 函数不存在一样。

什么给了?

最佳答案

您几乎完成了,只是一个小错误...您应该使用 XMLIndexerDeserializable 而不是 XMLElementDeserializable

以下在 Playground 中对我有用:

import SWXMLHash

let xmlData = "<Root>" +
"<SomeData>Some value</SomeData>" +
" <ClientInfo>" +
" <Client>MD</Client>" +
" <Name>Massive Dynamic</Name>" +
" </ClientInfo>" +
"</Root>"

let xml = SWXMLHash.parse(xmlData)

struct ClientInfo : XMLIndexerDeserializable {
let Client: String
let Name: String

static func deserialize(_ node: XMLIndexer) throws -> ClientInfo {
return try ClientInfo(
Client: node["Client"].value(),
Name: node["Name"].value()
)
}
}

let info: ClientInfo? = try? xml.children[0]["ClientInfo"].value()

这两者之间的区别有点令人困惑,它肯定需要在库中进行改进。要点是 XMLElementDeserializable 适用于没有子节点的独立类型(例如字符串、整数、日期等)。

关于swift - SWXMLHash 的反序列化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45851987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com