无法将xml转换为对象 - Swift4

时间:2018-01-21 13:53:30

标签: swift xml xmlmapper

我有以下XML字符串。我正在尝试使用XMLMapper(第三方库)进行解析。

我需要创建

数组

xml如下;

<RandomDecimals>
<decimal>98258979</decimal>
<decimal>1000002218</decimal>
<decimal>1000002102</decimal>
<decimal>1000005713</decimal>
<decimal>1000002035</decimal>
<decimal>1000001434</decimal>
<decimal>1000001066</decimal>
<decimal>1000001498</decimal>
<decimal>1000002313</decimal>
<decimal>1000016914</decimal>
<decimal>1000017021</decimal>
<decimal>1000019039</decimal>
<decimal>52373625</decimal>
</RandomDecimals>

要解析为对象的代码如下;

class DecimalElement: XMLMappable {
    var nodeName: String!

    var decimal: String?

    required init(map: XMLMap) {

    }

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

    class Response: XMLMappable {
    var nodeName: String!

    var shouldReset: Bool!
    var randomDecimals: [DecimalElement]?

    required init(map: XMLMap) {

    }

    func mapping(map: XMLMap) {
        randomDecimals <- map["RandomDecimals.decimal"]
        shouldReset <- map["ShouldReset"]

    }

总结一下,我需要将小数写入randomDecimals数组。但我需要使用XMLMapper

我做错了什么?

BR,

Erdem的

1 个答案:

答案 0 :(得分:1)

如果您的XML看起来像这样:

<root>
    <ShouldReset>true</ShouldReset>
    <RandomDecimals>
        <decimal>98258979</decimal>
        <decimal>1000002218</decimal>
        <decimal>1000002102</decimal>
        <decimal>1000005713</decimal>
        <decimal>1000002035</decimal>
        <decimal>1000001434</decimal>
        <decimal>1000001066</decimal>
        <decimal>1000001498</decimal>
        <decimal>1000002313</decimal>
        <decimal>1000016914</decimal>
        <decimal>1000017021</decimal>
        <decimal>1000019039</decimal>
        <decimal>52373625</decimal>
    </RandomDecimals>
</root>

然后,您可以通过替换:

来解决您的问题
var randomDecimals: [DecimalElement]?

使用:

var randomDecimals: [String]?

Response课程中。

class Response: XMLMappable {
    var nodeName: String!

    var shouldReset: Bool!
    var randomDecimals: [String]?

    required init(map: XMLMap) {

    }

    func mapping(map: XMLMap) {
        randomDecimals <- map["RandomDecimals.decimal"]
        shouldReset <- map["ShouldReset"]
    }
}

您还可以使用Array的{​​{1}}直接映射十进制数字:

Int64

希望这有帮助。