Tag: 模板

VIPER的模块模板:尽量减少忙乱的方法

简介 自从我开始研究iOS已有5年了。 这些年来,我观察到您周围的一切都会随着时间而变化,无论是编程指南,开发语言还是客户(针对敏捷开发过程)给出的初始要求范围。 但是,一件事永远不会改变…… DEADLINE 。 这个词根据情况可能会致命。 如果软件开发有自己的词典,那么DEADLINE一词将始终与之抗争…… 当您在进行可伸缩项目时,通常会使用快捷方式来减少工作量。 其中一些快捷方式只是一段代码 ,可以在网上找到“第三方库”。 另一方面,某些方法只是通过将开发过程中涉及的其他过程最小化/汇总来加速整个开发过程。 与VIPER一起使用,因为您的解决方案体系结构使您熟悉失去分配的每一分钟的痛苦。 在这种情况下,您应该有一些技巧来加快开发过程(如果使用VIPER,与MVC😓相比,您已经在编写3倍的代码了)。 正如我在上一个博客中所承诺的那样,今天我将说明如何为VIPER Project创建模块模板。 入门… 我们需要开发的模块模板将具有与Xcode相同的创建新文件的过程。 为此,您需要转到位置 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/developer/Library/Xcode/Templates/File\ Templates/Source/ 在此位置,您可以找到许多扩展名为.xctemplate文件夹。 复制文件夹Cocoa Touch Class.xctemplate并将其粘贴到您的桌面,然后再开始浏览其内容,因为您不想弄乱Cocoa Touch默认文件模板。 现在,在Cocoa Touch Class.xctemplate (在桌面上)中,删除除TemplateIcon.png , TemplateIcon Cocoa Touch Class.xctemplate和TemplateInfo.plist之外的所有内容。 现在打开TemplateInfo.plist 。 这是目前对您最重要的文件,因为它将包含许多不同的配置。 在文件中,您可以看到许多键值对集。 但是所有这些都没有必要进行讨论。 让我们逐一地介绍一个人的必要条件。 一种。 描述 (类型:字符串)-描述是指您正在制作的模板的目标/最终输出。 选择您想要描述此模板将执行的操作的任何单词。 b。 摘要 (类型:字符串)-与描述相同。 C。 MainTemplateFile (类型:字符串)-用于命名模块文件。 由于VIPER模块中的所有文件均以模块名称作为其前缀,例如LoginView.swift,LoginPresenter.swift等。这将作为一种变量类型,其值为模块名称。 由于此密钥不存在于plist文件中,因此您需要使用___FILEBASENAME___值添加它。 d。 选项 […]

Fastlane iOS,干净的模板。

目标? 大家好,我的文章的目的是让您清楚地了解多个项目中iOS快速通道的使用。 你不知道快车道吗? fatslane是一个移动自动化工具,可以帮助您轻松管理一些繁重的任务,正如其网站上所述: 构建和发布移动应用程序的最简单方法。 fastlane处理繁琐的任务,因此您不必 Fastlane是一款出色的工具,可在Android和iOS两种平台上使用,它也是用ruby编写的,并且具有现有的Swift版本。 Fastlane帮助交付和管理移动版本以及许多其他事情(例如管理测试人员列表,屏幕截图,代码签名等),还可以轻松与发行工具(TestFlight,Google Play,Crashlytics,HockeyApp …)的顶部进行交互。 有了这些给定的功能,它就成为了移动分发工具的顶端。 直截了当 在讨论fastlane之后,我们将以最小的努力展示如何实现对多个项目有效的干净fastlane集成的步骤。 我鼓励您看一些大型公司快速通道集成的示例,不要忘记官方文档。 这将帮助您充分满足项目需要。 好吧,我们应该现在开始,所以我们的快速通道目标是采取一些行动,让他们列出: 交付至App Store 交付给TestFlight 运送到织物 更新设备列表(针对每个配置文件) 安装依赖项(我知道这是不值得的) 别忘了采取一些内部操作,例如松弛通知和内部构建。 这里有什么新消息? 我们的主要目标是集中于所有项目在多个项目上的可重用性,每个项目的更改最少。 因此,我们的fastlane回购结构如下所示: 基本上,如果您熟悉fastlane,您会注意到Appfile和Fastfile始终存在。 因此,让我们定义上面显示的每个现有文件或存储库的需求 changelog.txt :包含每个已发布应用程序的更改日志或发行说明(用于beta测试),其本质上用于Fabric发行说明。 buildnotes.md :这是用于历史记录的痕迹,在每次Beta测试交付后,此文件将与新内容串联在一起,基本上是交付日期 , 应用程序名称, 应用程序版本和发行说明。 Invitation_emails.txt :每个crashlytics版本的邀请电子邮件列表,每行一封电子邮件。 devices.txt :要在现有配置文件中添加的设备列表,这是一个敏感文件,因此您必须尊重现有格式(多余的空间会造成问题)。 testflight_testers.csv :为TestFlight构建添加的测试人员列表,这也是Apple提供的尊重该文件的格式。 元数据和屏幕截图:这些存储库包含应用商店信息的所有必要数据,请在此处查看以更好地理解。 证书 :包括下载的证书和配置文件。 IPA:将具有生成的应用程序和dSYM文件。 .env👽 :这是一个环境变量,它包含所有项目配置,这将是每个快速通道集成的主要负责文件,当然还要与AppFile配合使用。 就这样,更改这两个文件,而无需处理任何编码文件。 嗯,.env里面有什么? 好吧,看看: 您可以看到大多数变量都带有注释,每个注释代表变量的内容,因此您的角色将为每个项目填充这些变量,您很高兴。 也别忘了Appfile 您想看看现有的车道吗? 这里是 在to_appstore […]

Xcode 9中的VIPER项目模板:当模块模板不够用时…

如今,iOS的要求非常困难(相对于时间)。 这些天的要求就像“我想要像托尼·史塔克(Tony Stark)的钢铁侠西装那样的东西”。但这不是难题。 问题出现了,当在下一行中听到“您有3个星期”,然后您会突然感到吐出这三个神奇的单词的冲动,可惜……..u不能……😕 就像您知道自己可以做到,但另一方面,您对自己的能力提出了质疑……“我能在DEADLINE内完成它吗?” 在满足这些要求时,大多数开发人员更喜欢从头开始工作,他们可以轻松地制定自己的工作策略。 但是,老实说,我们是否有足够的时间……从头开始。 最近,我正在使用新架构VIPER。 在研究了这种面向协议的体系结构之后,我意识到您必须有足够的时间来使用它,因为与MVC相比,几乎必须编写三倍的代码。😟 Xcode Project模板提供的内容是您必须播放的文件的最小限度基本展示。 但是,在进行大型项目时,您需要具有一个良好的结构,其中将包含Enums,Extensions,Constants,Storyboards,Feature Modules等文件。随着您深入了解需求,这种结构会不断发展。 因此,我想到了拥有一个项目模板,该模板将包含一个基本结构以及一些基本模块,例如登录,侧边菜单,仪表板,注销等。至少可以节省两到三天的初始工作时间…😁😁 对于创建项目模板,我想您首先需要了解的是项目模板的外观。 为此,请转到位置/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/developer/Library/Xcode/Templates/Project\ Templates/iOS/Application 在此位置,您可以找到许多扩展名为.xctemplate文件夹。 复制文件夹Single View App.xctemplate并将其粘贴到桌面上,然后再开始浏览其内容,因为您不想弄乱Xcode的默认模板。 首先,将文件夹名称从Single View App.xctemplate更改为Viper Project Template.xctemplate 。 但是更改文件夹名称并不能解决所有问题,而有关TemplateInfo.plist文件的所有操作都位于您必须使用的文件夹下。 打开TemplateInfo.plist 。 现在,像Xcode项目一样,项目模板也具有使它唯一的Identifier 。 对于单一视图应用程序,您可以看到com.apple.dt.unit.singleViewApplication 。 您可以将其更改为任何其他值,例如我使用的“ com.manishKumar.singleViewApplication”。 现在,只需保存TemplateInfo.plist文件,然后复制文件夹Viper Project Template.xctemplate并将其粘贴到复制Single View App.xctemplate 。 退出Xcode,然后重新启动。 现在,当您创建一个新项目时,将有一个类似的选项。 Yippee …😃😃您已经创建了自己的项目模板😎。 但是还没有结束。 根据VIPER结构,我们仍然没有任何内容。 我们现在需要对此进行努力…… 再次打开TemplateInfo.plist (保留在桌面上)。 在该文件中,在Options选项下浏览。 您可以在“ Units下看到两个选项 目标C […]

Xcode 9自定义模板

作为开发人员,我们不断努力改善我们的开发流程。 无论是与编写代码,自动化某些事情有关,还是只是保持更高的生产力和专注力。 在这里,我们将讨论如何使用Xcode自定义模板来改进文件的创建。 我们中的许多人可能没有听说过它,因为Apple并未推广此功能,并且关于此主题的文档也很少。 但是无论如何,这样的功能仍然存在,并且可以使用一些预填充的样板代码极大地改善文件或整个模块的创建。 作为示例,我们将设置UIView模板,该模板还将创建一个相应的.xib文件,默认情况下Xcode无法创建该文件。 位置 这些用户定义的模板位于~/Library/Developer/Xcode/Templates/File Template 。 如果缺少此文件夹,则可以自己创建它,并且Xcode将在重新打开时链接到该文件夹​​。 您也可以将它们分组到该文件夹​​内的子文件夹中。 例如, ~/Library/Developer/Xcode/Templates/File Template/Custom Templates和Xcode在创建新文件时将正确地渲染这些组。 模板设置 每个模板都是一个扩展名为.xctemplate的文件夹。 该文件夹包含文件模板和资源,这些文件模板和资源将被填充并添加到项目和配置TemplateInfo.plist 。 用户可以在模板创建期间填写的所有模板设置和字段都在TemplateInfo.plist中定义。 在此plist文件中,您可以定义将用于模板选择对话框的图标。 模板的Kind可以有两个值,但大多数情况下是Xcode.IDEKit.TextSubstitutionFileTemplateKind ,另一个是Xcode.IDECoreDataModeler.ManagedObjectTemplateKind ,我们在这里不介绍它的用法。 下一项是Options数组,它可以包含各种输入字段,选择器,复选框等。每个字段都是不言自明的,只需注意Identifier字段用于用户提供的变量,这些变量可以在源代码模板中替换。 Type定义输入字段的类型。 可以是text , static , checkbox , combo , popup 。 让我们将TemplateInfo.plist文件放入用户定义模板下的UIView.xctemplate文件夹中。 文件结构应如下所示: └──文件\模板 │└──UIView.xctemplate │├──TemplateInfo.plist 重新启动Xcode之后,您应该看到模板如下所示: 并且在选择模板菜单后应如下所示: 现在,让我们看一下文件模板。 基本上,它们是具有预定义关键字的常规文件,这些关键字将在创建过程中被用户提供的值替换。 主要关键字是: ___FILEBASENAME___ —当前文件的名称,不带任何扩展名。 ___FILEHEADER___ —每个源文件的IDE预定义注释头。 ___VARIABLE_variable_name___ —用户在模板创建期间输入的自定义变量,以后可以在模板文件中使用,例如,我们有Subclass of:输入字段,用于为UIView定义继承。 让我们创建一个名为___FILEBASENAME___.swift文件,并使它看起来像这样: […]

XCode模板

最终没有在任何地方存在的概念。 不适用的形式或形式上的法律要求。 在此之后,我们将发布XCode或hacer plantillas delcódigoque mas usamos的常规模板。 1. Nuevo模板 Vamos a crear un nuevo模板llamado CustomTemplate ,para vamos a crear un contenedor de la plantilla。 由ejemplo en el escritorio提供。 Para crear ese contenedor creamos unaveta normal y de nombre le ponemos CustomTemplate.xctemplate 2.自定义类 尤其要注意的是植物生长的裂缝。 Nuestra plantilla vamos,lamarle CustomClass和seres Swift,以及poder tener或no XIB。 Para ello creamos dos carpetas: […]