Tag: 代码生成

语言之间的界线模糊…正在进行代码生成

实验项目CodeGen –可以创建多种语言的代码。尽管我听说人们一旦学习了一种语言,就会很容易学习新的语言 。 -C被Swift取代,几乎在同一时间,我决定不再只使用iOS,而是转而使用Web。 我了解一件事。 有很多共同点。但是由于最初是Javascript,我花了一些时间来适应语言的无限灵活性。 我发现很难适应它。 然后我开始使用Typescript。。几乎在那时,我感到不仅在概念上而且在语法上都有很多共同点…… CodeGen最初是从通用实体/模型开始创建React app / Angular 2本机代码的。很快,注意力就转移到了多语言可能性的产生上。 可能已经想知道它了..如果可能的话。 工作仍在进行中。但是似乎Swift和Typescript或多或少是兄弟,可能是同父异母的兄弟…… WIP:在我探索更多内容时会更新… 杰克逊·S·罗德里格斯/ RTSCodeGen RTSCodeGen –尝试从模型 github.com 为React&Angular2项目生成Typescript代码/文件 我的样本来自Colin Eberhardt ..的Todo List组件 CodeGen – 打字稿 –生成的文件 CodeGen — Swift –生成的文件 CodeGen —源 结论 一旦Typescript的基础准备就绪并可以正常工作,只需半小时即可包含Swift代码。 似乎语言障碍正在模糊……。

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

大家好! 今天,我们将学习如何停止编写样板代码。 创建某些模型时,我们总是会编写相同的代码。 假设我们有一个地方,那里有ID,名称和位置。 所以我们的结构看起来像这样: 然后,当您“构建”项目时,sourcery将为所有模板生成代码。 您可以在此处找到其他安装方法:https://github.com/krzysztofzablocki/Sourcery#installation 配置文件 让我们在xcode项目中创建名称为“ Templates”的新文件夹,我们的模型应该在名称为“ Models”的文件夹中。 现在我们需要在项目文件夹中创建“ .sourcery.yml”文件。 并写成这样: 您必须用项目名称(文件夹名称)替换“ ProjectName”,这是从“ .sourcery.yml”文件到我们的模型文件夹和模板的路径。 在此处阅读有关此配置文件的更多信息。 代码生成 因此,现在所有人都可以生成代码了。 我们只需要创建一个模板。 让我们创建一个简单的“ JSONAutoRepresentable”协议: 在我们最近创建的Templates文件夹中,创建文件“ JSONRepresentable.stencil” 好的,现在我们需要编写模板。 我们该怎么办? 我们必须遍历实现协议的所有类: 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 希望本文对您有所帮助。 ✌️

CuteBaby:用于Swift的JSON模型生成器

CuteBaby可以从JSON字符串生成Swift模型(结构或类)。 它具有一些不错的功能,可以自定义生成的模型。 它可以从JSON推断属性的类型,例如String,Int,Double,URL和Date。 它可以处理嵌套的JSON,它将生成嵌套的模型。 它支持Swift 4中的Codable。 您可以使用Property Map指定属性名称,使用Array Object Map指定数组的对象名称,使用Property Type Map指定属性的类型 ,或者使用Enum Properties指定枚举的定义。 它还可以处理数组根JSON,它将自动合并数组中对象的属性。 它可以使用漂亮的格式格式化JSON。 它可以从URL加载JSON。 您可以拖放文本文件来创建新项目。 对于JSON: { “ id”:42 “ name”:“ nixzhu”, “推特”: { “ profile_url”:“ https://twitter.com/nixzhu”, “ created_at”:“ 2009-05-12T10:25:43.511Z” } } 它将生成Swift代码(使用Codable ): struct用户:可编码{ let id:整数 命名:字符串 struct Twitter:可编码{ 让profileURL:URL 让createdAt:日期 私有枚举CodingKeys:字符串,CodingKey { case profileURL =“ profile_url” case createdAt =“ created_at” […]