Swift3 可能返回nil的swxmlhash条件反序列化
我正在使用SWXMLHASH Swift库解析一些第三方XML数据。此数据有时返回的值对我的应用程序无效。发生这种情况时,我希望忽略此数据并在我的Swift3 可能返回nil的swxmlhash条件反序列化,swift3,swxmlhash,Swift3,Swxmlhash,我正在使用SWXMLHASH Swift库解析一些第三方XML数据。此数据有时返回的值对我的应用程序无效。发生这种情况时,我希望忽略此数据并在我的反序列化函数中返回nil,而不是Self 例如,我有一些XML,如下所示: <Root> <ColourChanges> <ChangeCount>0</ChangeCount> <ChangeItems></ChangeItems>
反序列化
函数中返回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。请随时将您的评论更改为答案,我可以将其标记为正确。再次感谢您回答这个问题。