Swift3 可能返回nil的swxmlhash条件反序列化

Swift3 可能返回nil的swxmlhash条件反序列化,swift3,swxmlhash,Swift3,Swxmlhash,我正在使用SWXMLHASH Swift库解析一些第三方XML数据。此数据有时返回的值对我的应用程序无效。发生这种情况时,我希望忽略此数据并在我的反序列化函数中返回nil,而不是Self 例如,我有一些XML,如下所示: <Root> <ColourChanges> <ChangeCount>0</ChangeCount> <ChangeItems></ChangeItems>

我正在使用SWXMLHASH Swift库解析一些第三方XML数据。此数据有时返回的值对我的应用程序无效。发生这种情况时,我希望忽略此数据并在我的
反序列化
函数中返回
nil
,而不是
Self

例如,我有一些XML,如下所示:

<Root>
    <ColourChanges>
        <ChangeCount>0</ChangeCount>
        <ChangeItems></ChangeItems>
    </ColourChanges>
</Root>

0
我希望能够测试ChangeCount值,如果它等于0,我希望能够在我的colorchanges结构的
反序列化
函数中返回
nil

当我定义我的
反序列化
函数时,似乎如下所示:

static func反序列化(\unode:XMLIndexer)抛出->颜色更改?

我收到一个运行时错误,抱怨
反序列化
实现不存在

我相信当我遇到一个不需要的值并在调用者中处理它时,我可以通过从我的结构的
反序列化
方法抛出来处理这个问题,但是,如果我只返回
nil
,它会更干净

有没有人遇到过类似的问题,或者就如何实现这一点提出了建议


感谢您的帮助。

添加我在上面的建议:


我使用的一个模式是空对象模式,基本上返回类似
colorchanges.empty
的内容,其中empty是一个方法,它使用预设值构建一个
colorchanges
实例,以指示它是空的或空的。那对你有用吗


我使用的一种模式是空对象模式,基本上返回类似
colorchanges的内容。empty
其中
empty
是一种使用预设值构建
colorchanges
实例以指示其为空或空的方法。这对你有用吗?@DavidMohundro-谢谢你回答这个问题。在这个用例中,您的建议可能会有问题,从XML返回的节点可能完全由零值组成(即,与XML关联的WSDL不强制要求值),因此我想知道这是否会导致尝试生成空版本的问题。目前,为了解决这个问题,我正在使用我在帖子中描述的“投掷法”。但是,这也可能隐藏问题,因为在调用
myobject.value()
期间,我将它与
try?
结合使用。我会调查你的想法。我已经考虑了你的建议,我得到的解决方案是使用一个返回颜色变化的静态函数?。我使用它来包装对value()的调用。然后,我可以测试我的对象的有效性,并在必要时返回nil。请随时将您的评论更改为答案,我可以将其标记为正确。再次感谢您回答这个问题。