可能 return nil 的 swxmlhash 条件反序列化

swxmlhash conditional deserialization that may return nil

我正在使用 SWXMLHASH Swift 库来解析一些第 3 方 XML 数据。这些数据有时可能会 return 使用对我的应用程序无效的值进行编辑。发生这种情况时,我希望在我的 deserialize 函数中忽略此数据和 return nil 而不是 Self

例如,我有一些 XML 这样的:

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

我希望能够测试 ChangeCount 值,如果它等于 0,我希望能够在我的 ColourChanges 结构的 deserialize 函数中 return nil

当我定义我的 deserialize 函数时,似乎如下:

static func deserialize(_ node: XMLIndexer) throws -> ColourChanges?

我收到一个运行时错误,抱怨 deserialize 实现不存在。

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

有没有人遇到过类似的问题,或者对如何实现有任何建议?

感谢您的帮助。

从上面添加我的建议:

A pattern I've used is cases like this is the null object pattern - basically you return something like ColourChanges.empty where empty is a method that builds a ColourChanges instance with preset values to indicate that it is empty or null. Would that work for you?