通过快速使用代码生成来快速创建模型

大家好!

今天,我们将学习如何停止编写样板代码。

创建某些模型时,我们总是会编写相同的代码。 假设我们有一个地方,那里有ID,名称和位置。 所以我们的结构看起来像这样:

然后,当您“构建”项目时,sourcery将为所有模板生成代码。

您可以在此处找到其他安装方法:https://github.com/krzysztofzablocki/Sourcery#installation

配置文件

让我们在xcode项目中创建名称为“ Templates”的新文件夹,我们的模型应该在名称为“ Models”的文件夹中。

现在我们需要在项目文件夹中创建“ .sourcery.yml”文件。 并写成这样:

您必须用项目名称(文件夹名称)替换“ ProjectName”,这是从“ .sourcery.yml”文件到我们的模型文件夹和模板的路径。

在此处阅读有关此配置文件的更多信息。

代码生成

因此,现在所有人都可以生成代码了。 我们只需要创建一个模板。 让我们创建一个简单的“ JSONAutoRepresentable”协议:

在我们最近创建的Templates文件夹中,创建文件“ JSONRepresentable.stencil”

好的,现在我们需要编写模板。 我们该怎么办?

  1. 我们必须遍历实现协议的所有类:

2.我们的模型可以包含一些变量,这些变量不是来自服务器的。 在这种情况下,我们可以为此变量添加注释:“ // sourcery:skip”,然后我们必须遍历所有没有跳过注释的变量:

3.在某些情况下,我们可以使用不同的变量名称和json键。 在这种情况下,我们可以使用“ // sourcery:jsonKey =” JSONKey””标记该变量。 然后:

4.如果变量是Array,那么我们需要映射到elementsTypes(并且需要将驼峰大小写转换为蛇形大小写。):

5.如果该变量也是JSONAutoRepresenteable:

6.如果变量是枚举:

7.对于所有其他变量:

完整的JSONRepresentable.stencil文件可在以下位置找到:

https://gist.github.com/Banck/0aa2d992173f972999772cda768929f5

因此,现在我们可以将JSONAutoRepresentable协议添加到我们的Place模型并构建项目。 结果如下:

这是带有跳过注释和jsonKey的模型的示例:

您可以在此处阅读有关模板的更多信息:

https://cdn.rawgit.com/krzysztofzablocki/Sourcery/master/docs/writing-templates.html

希望本文对您有所帮助。 ✌️