Tag: cocoapods

维护一个不断发展的开源项目

最好的部分是旅程 在2015年,我开源了一个名为SwiftyStoreKit的小型Swift框架。 目标: 在iOS上简化应用内购买 。 我以前曾写过关于它的经验的文章: 我如何在GitHub Project上获得1000⭐️ 这是关于我的旅程如何继续进行以及该项目如何推动我成为更好的开发人员的后续报告。 首先,我想分享一些很棒的资源,这些资源给了我启发,并提供了许多有关如何发展项目的实用技巧。 GitHub开源指南 开源指南 了解如何启动和发展您的项目。 开源指南 本指南包含一些很棒的材料。 我特别建议本节: 维护者最佳实践 从文档编制流程到利用社区,您都可以轻松地成为开源维护者。 开源指南 扩展开源社区 Felix Krause在他非常详细的“扩展开源社区”文章中谈到了开源项目的四个阶段。 摘要: 阶段1:在GitHub上放置源代码 阶段2:开发人员开始使用您的软件 阶段3:项目很受欢迎,并且是该领域的首选解决方案 阶段4:超大规模开源项目 我不能推荐这个。 去读吧 而这个: Artsy的开源 。 进入下一个层次 当SwiftyStoreKit去年变得流行时,开发人员开始提出问题并提出要求。 压力很大 作为唯一的维护者,由于许多问题,我感到有些压力: 问题列表正在增长。 其中一些强调了项目特定领域的缺陷。 StoreKit不是一个琐碎的框架,我对某些方面不太了解。 我担心在进行更改时会引入回归。 对于IAP多久失败一次以及在什么情况下失败,我没有任何度量标准。 我的用户销量下降了吗? 1%,5%,10%? 更多? 我无法在所有可能的端到端配置(iOS,macOS,tvOS,沙箱,生产,iTunes停机,帐户/ IAP配置问题等)中有效地测试我的媒体库。 保持理智 我意识到我必须做一些事情: 阅读有关StoreKit的更多信息,并确保我的实施符合Apple的准则。 井井有条,对问题和PR做出更及时的响应。 避免蠕变,并学会何时拒绝。 添加单元测试。 标准化和简化贡献,包括我的和其他用户的贡献。 我做了什么 完全以完整的单元测试覆盖范围重写了采购流程。 […]

在本地使用CocoaPods Lib

您已经创建了一个Lib,并希望通过CocoaPods将其安装在其他项目中,但仍想在本地使用Lib和其他项目。 为此,您将需要创建Podspec文件。 该文件将包含有关您的Lib的所有信息( 版本 , 名称 , 描述 , 依赖项 , 作者等)。 如果Podspec文件和所有必填字段已填写,则只能使用CocoaPods将此Lib放置在其他项目中。 有一个命令可以创建您的自动Podsepc,并报告所有字段都要填写。 在告诉您哪个命令之前,有非常重要的细节。 Podsepc的名称应与项目相同,如果不相同,则在尝试由其他库上的pod install安装时,将找不到它。 要创建Podspec,您应该位于Project文件夹( 您的lib )内 cd ~/Workspaces/SomeLib // Will create the file SomeLib.podspec pod spec create SomeLib // or // Will create the file SomeLib.podspec and will fill // automatically some inputs. pod spec create https://github.com/SomeLib.git 注意:如果您使用git网址。 您应该注意那里的项目名称。 例如。: 如果您使用的是https://github/some-lib.git并且Lib的名称为SomeLib,则pod […]

Integrasi Firebase dengan iOS Swift melalui Cocoapods依赖项

嗨,敏捷开发人员! 卡里伊尼赛亚阿坎族与孟加拉人一起共享火力发电厂 。 Ngomong-ngomong ada yang tau apa itu cocoapods ?? Cocoapods adalah sebuah 主管经理 Yang membantu开发人员mengakses berbagai macam 库 yang dibutuhkan。 Selanjutnya kita coba安装cocoapods terlebih dahulu! Langkah pertama,布卡终端terlebih dahulu。 Selanjutnya,ketik命令berikut ini: sudo gem install cocoapods Inilah tampilan setelah mengeksekusi命令diatas dan tahap untuk menginstall cocoapods telah selesai。 Bagi yang penasaran dengan konfigurasi cocoapods lebih lanjut […]

Swift,安全又简单的另一个CoreData堆栈

微调NSPersistentContainer 我时不时地看到苹果公司的代码示例和模板提出了非最佳解决方案。 我发现苹果的代码有问题,CoreData在我列表的顶部。 您可以自己尝试。 创建包含CoreData的任何Xcode项目。 苹果公司的CoreData代码建议使用主线程(视图上下文)来保留数据。 最重要的是,它在AppDelegate中完成。 但是,Apple确实使用这种方法解决了写入冲突,因为我们仅使用一个上下文来保存数据,但是解决写入冲突还不够。 持久数据,无论保存多少数据,都比读取慢得多。 保存数据会执行SQLite COMMIT,即使您只写一个BYTE,也要花费几毫秒的时间。 在主线程上编写将使您的用户界面变得迟钝。 这就是为什么我将CoreData堆栈组织成这样的原因: 我假设您了解有关Apple的NSPersistentContainer全部知识,如果不了解,则需要进行检查。 您需要先设置它并加载存储,然后再创建CoreData堆栈。 在上面的代码中,我在其他文章中使用了一个简单的“变异运算符”。 在我们的基本CoreData堆栈中,我们有3个专用上下文: mainContext只读主上下文,出于所有与UI相关的目的,它会自动观察更改。 writingContext读+写背景上下文,我们只在这里和这里保存数据,其他人只是观察。 readingContext只读的背景上下文,用于非UI用途,当我们必须对后台的更改做出反应时(并非每个人都需要此内容)。 我们从不对后台上下文使用performAndWait ,因为我们的块是在这些上下文的内部队列中异步执行的。 当我们想“关闭”核心数据栈时,我们需要等待内部队列完成后台任务。 这就是为什么我们将背景上下文包装到BackgroundManagedObjectContext并在deinit使用performAndWait取消所有未完成的任务的原因。 除此之外,应使用performTask扩展方法(这是对perform方法的包装)添加所有任务。 苹果提供了在此设置中应避免的方法 func performBackgroundTask(_块:@转义(NSManagedObjectContext)->无效) 问题是,如果使用此方法进行写操作,则会发生写冲突,因为每次都会使用其自己的内部串行队列创建一个新的上下文。

可可豆荚入门

我告诉您,开始IOS开发并非一帆风顺。 我面临的问题之一是为CoOSapods安装和使用IOS的依赖项管理器。 我是Google和Bing,直到遇到了这个非常有用的stackoverflow帖子。 您可以在这里查看或直接阅读这篇文章。 因此,我只重点介绍可帮助您开始使用Cocoapods的步骤。 我正在运行Xcode版本8.3.3和Swift 3.1,它们是发布本文时的最新版本。 如果没有,我建议您使用最新版本的Xcode。 因此,让我们开始吧。 打开终端并输入: sudo gem install cocoapods 使用此命令,gem将被安装在系统库的Ruby中。 如果出现错误“ activesupport需要Ruby版本> = 2.xx”,请首先通过输入终端安装最新的activesupport。 sudo gem install activesupport -v 4.2.6 2.安装后,将会有很多消息,请阅读它们,如果未发现错误,则表明可可足目已完成安装。 接下来,您需要设置cocoapods主存储库。 输入终端: 吊舱设置 等待它会下载主仓库。 大小非常大(2017年8月为414mb)。 所以可能要一段时间。 您可以通过打开“活动”并转到“网络”选项卡并搜索git-remote-https来跟踪下载。 或者,您可以尝试向命令添加详细信息,如下所示: 吊舱设置-详细 3.完成后,将输出“ Setup Complete”,然后您可以创建XCode项目并保存。 4.然后在终端cd中找到“您的XCode项目根目录”(您的.xcodeproj文件所在的位置)并键入:(如果不知道如何请在此处检查) 荚初始化 5.然后通过输入终端打开项目的Podfile或直接转到项目文件夹,为您创建一个Podfile,使用您喜欢的文本编辑器将其打开: 打开-Xcode Podfile 6.您的Podfile将以文本模式打开。 最初,那里会有一些默认命令。 在这里添加项目的依赖项。 例如,我想使用Alamofire,因此在podfile中,键入 pod’Alamofire’,’〜> 4.4′ (此行是向您的项目添加Alamofire库的示例)。 其他提示: 取消注释platform :ios, ‘8.0’取消注释user_frameworks! 如果您使用的是Swift […]

Como安装和使用CocoaPods

iOS和OSX上的CocoaPods,El gestor,mas ado,ados de laroller,Manual masfácilde agregar estas和tu proyecto。 步骤1:安装 Mac上的Pega este comando en el终端。 须藤宝石安装cocoapods 推荐使用可可豆。 参照文献中的控制权和所有权利的证明书。 CocoaPods指南 CocoaPods依赖项管理器的官方文档站点。 guides.cocoapods.org Paso numero 2:Crear tu Podfile Tenemos tres opciones para crear este archivo,您个人设定的建议零售价。 Estando en laraízdel proyecto usa este comando en tu终端。 触摸Podfile Estlam comando creara un archivo en tu Directorio llamado Podfile,坦比亚puedes usarlo para […]

Criando uma Pokedex com Swift零件:1/3

Instalando o CocoaPods 口袋妖怪在宠物小精灵上的宣传很不错。 Vamos criar uma lista(Pokedex)dos 881 pokemons que temos atualmente。 出售产品和服务的方法是将uma API作为亚伯大·奎·维特拉·托泽斯的信息,作为信息。 pokéapi–神奇宝贝RESTful API Pokeapi Pokemon RESTful API pokeapi.co uma API的Chamada Alamofire的Antes de tudo precisamos。 Elairános ajudar com作为HTTP的要求。 Alamofire / Alamofire Alamofire – Swift github.com中的优雅HTTP网络 可以使用Alamofire vamos或CocoaPods,也可以使用gerenciadordedependências,也可以使用faal mais dele nesse post。 CocoaPods.org iOS和Mac项目的依赖管理器 cocoapods.org Nessa primeira parte irei mostrar como instalar o […]

围绕iPhone X Thingy的SnapKit

当iPhone X出现时,我必须确保我的Talk Dim Sum应用程序中的所有内容都避免在屏幕底部出现新的家用指示器。 这在许多情况下会自动发生,例如UITabBarController,但是在我的菜品页面中,我在底部有一个自定义工具栏视图。 为了保持在主页指示器水平的黑条上方,我检查了设备的型号标识符(使用UIDevice-Hardware程序包),以查看它是否是iPhone X,然后添加一些底部填充(如果是)。 但是现在有多个iPhone X型号,并且每次出现新型号时都添加一个型号检查并不是一个好计划。 正确的技术是使用safeAreaLayoutGuide。 我正在使用SnapKit,此问题在github问题中进行了描述,因此页面视图控制器中工具栏的布局代码现在如下所示: buttonPanel.snp.makeConstraints {(make-> Void inmake.width.equalTo(view)make.height.equalTo(50)make.centerX.equalTo(view)make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottomMargin) // elf.view.safeAreaInsets.bottom) } 在iPhone XR上,工具栏安全地位于主页指示器上方:

依赖于其他Pod的分布式框架

在本教程中,我们的重点是使用依赖于其他容器的框​​架。 打开终端,并使用以下命令克隆启动程序项目。 git clone –branch 1.0.3 https://github.com/aliakhtar49/MyFramework.git 这是我们在上一部分中开发的框架。 如果您遵循 上一部分 ,则可以直接转到“入门”部分。 框架的职责是使用NSUrlSession打入网络调用,并将数据返回给使用者应用程序。 在上一部分中,我们看到了如何在本地和远程使用框架,而在这一部分中,我们将对框架添加一个依赖关系,而不是使用NSUrlSession,它将使用pod中附带的alamofire。 如果您不了解或不了解Podfile,Podspec和如何创建框架,强烈建议您看一下前面的部分。 😐 如图1所示,磁盘上的克隆存储库项目结构。 如果尚未创建框架存储库,则必须执行以下操作( 或参阅上一部分) 在github上创建MyFramework存储库 将项目克隆到一些空文件夹 将clone 1.0.3 MyFramework项目内容移动到空克隆存储库文件夹中 推送代码 您可以下载消费者应用程序(Consumer_Part2_Starter)。 该应用程序将使用我们创建的框架 入门 在本节中,我们将向我们的框架添加一个依赖项。 转到终端中MyFramework项目的根文件夹,如图2所示,然后运行以下命令。 这将创建一个podfile ,如图2所示。 Podfile定义项目所依赖的内容。 pod init 打开podfile并将其替换为图3中所示的代码。我们所做的是添加Alamofire作为对框架的依赖。 转到终端中MyFramework项目的根文件夹,如图2所示,然后运行以下命令。 这将安装Alamofire,并创建一个MyFramework.xcworkspace文件。 现在关闭项目并打开MyFramework.xcworkspace 。 pod install 如图4所示,我们在框架中添加了新功能。 现在,与以前的版本相比,它还有另一种方法。 此方法使用Alamofire从服务器获取数据,并且Alamofire包含在Pod中,该Pod是对此框架的依赖。 转到MyFramework项目的根文件夹,打开MyFramework.podspec文件,并用以下代码替换代码,如图5所示。我们做了几件事 Cocoapods使用此git url下载源代码并寻找标签1.0.6 当消费者使用cocoapods安装我们的框架时,cocoapods首先查看依赖关系,然后按照步骤1进行自动安装。消费者应用程序无需担心它 Pod规范描述了Pod库的版本。 它包括有关应从何处获取源,使用哪些文件,要应用的构建设置以及其他常规元数据(例如其名称,版本和说明)的详细信息。 将更改推送到您创建的存储库。 我推动了回购 推送标签以创建历史记录点。 这一步很重要。 由于我们将使用此标记在客户应用程序上安装pod,如图7所示 […]

如何免费为多个项目存储库配置TravisCI

Travis CI是针对Github存储库的出色托管连续集成服务。 特别适用于快速测试。 当我将Trabase CI与Firebase iOS快速入门挂钩时,我不得不实施一些技巧。 因为我们, 1个回购中有多个项目, 使用CocoaPods 1.0(默认值为0.5), 在测试中将Google plist文件包含到每个项目中, 更新每个测试项目的info.plist, 跨虚拟机并行构建, 缓存捆绑程序和依赖项(荚)。 构建生命周期 Travis CI的构建包括两个步骤: install :安装所需的任何依赖项 script :运行构建脚本 您可以在安装步骤( before_install )之前,脚本步骤之前( before_script )或之后( after_script )运行自定义命令。 在before_install步骤中,您可以安装项目所需的其他依赖项,例如Ubuntu软件包或自定义服务。 所以我在这里 安装CocoaPods 1.0(默认为0.5) 进入每个示例文件夹并安装Pod 复制到模拟的Google plist文件中 使用sed更新Google plist和info.plist 将Google plist文件添加到每个目标中。 (使用ruby和xcodeproj) -gem卸载cocoapods -a — gem install cocoapods -v’1.1.1′ — gem install xcpretty — cd $ […]