【iOS】Cocoapods的安装以及使用
文章目录
- 前言
- 一、Cocoapods的作用
- 二、安装Cocoapods
- 三、使用Cocoapods
- 总结
前言
最近笔者在仿写天气预报App时用到了api调用数据,一般的基本数据类型我们用Xcode中自带的框架就可以转换得到。但是在和风天气api中的图标的格式为svg格式。
似乎iOS13之后Xcode中可以直接使用svg格式的图片,但笔者没有查到对应的资料。笔者就调用了第三方库来使用svg格式的图片,这花了读者一天的时间才安装完成集成第三方库的Cocoapods并对其进行使用,特此写博客记录,如有不足请不吝指出
一、Cocoapods的作用
依赖管理:CocoaPods允许开发者在项目中定义所需的第三方库和框架,然后自动下载、安装和配置这些依赖项。这样,开发者无需手动管理这些库,从而简化了项目设置和更新流程。
库的集成:通过CocoaPods,开发者可以轻松地集成各种功能强大的第三方库,这些库可以实现各种功能,例如网络请求、图像加载、数据库操作、UI控件等。这些库是经过广泛测试和优化的,有助于加速开发过程,提高应用质量。
版本管理:CocoaPods允许开发者指定所需库的特定版本或范围,确保在项目中使用的库版本是可控的。这样可以避免潜在的兼容性问题,并且在需要更新库时可以更加灵活地控制版本升级。
快速集成:通过CocoaPods,开发者可以快速集成新的第三方库,只需简单地在项目配置文件中添加库的名称和版本要求,然后运行一条命令进行安装即可。
支持私有库:除了公共库,CocoaPods还支持私有库的集成。这对于团队内部开发的共享代码或从第三方获取的非公开库非常有用。
更新管理:CocoaPods可以定期检查并更新项目中使用的第三方库,使开发者能够及时获取最新的功能和修复bug,保持项目的稳定性和安全性。
简单来说,Cocoapods是一种可以定期更新项目中的第三方库,能让用户更加方便使用第三方库的工具。
二、安装Cocoapods
在安装前笔者需要多嘴一句,因为我们的Cocoapods是拿Ruby语言编写的,所以我们下载Cocoapods前需要下载相关的关于Ruby语言的软件
网络上有许多安装Cocoapods的教程,大多是几年前的方法了,有些方法可能并不适配现在Mac,这里给出笔者参考的博客,跟着这篇博客走大概率能成功Cocoapods安装教程
这里需要注意安装Cocoapods时用到的rvm,ruby,RubyGems都最好升级到最新版,随着Mac的更新,CocoaPods要求的ruby等的版本越来越高,举个栗子 :
ERROR: Error installing cocoapods:The last version of activesupport (>= 5.0, < 8) to support your Ruby & RubyGems was 6.1.7.4. Try installing it with `gem install activesupport -v 6.1.7.4` and then running the current command againactivesupport requires Ruby version >= 2.7.0. The current ruby version is 2.6.10.210.
这是读者安装时碰到的一个错误,这个错误提示表明当前安装的 Ruby 版本不满足 CocoaPods 的要求。CocoaPods 需要的最低 Ruby 版本为 2.7.0,而我当时的 Ruby 版本是 2.6.10.210。
实际上我们通过终端能下载的Ruby版本并不多:
因此笔者建议将Cocoapods所有需要附带安装的软件都从一开始就装到最新版
三、使用Cocoapods
安装完成Cocoapods,我们该如何调用其中的第三方库呢?在刚开始使用时笔者也碰到了很多问题,在这里总结一下笔者的使用方法
- 找到需要使用第三方库的工程文件夹
这里有一点需要注意,文件夹的名字就是我们工程的名字,在后面会用到
- 在终端定位我们的工程位置
这里的方法就是在终端中输入cd + 空格,然后将我们的工程文件夹拖入终端中,这样就成功让终端索引到了我们的工程
cd 工程名
- 在工程文件夹中创建podfile文件
在终端中输入下面的命令
touch podfile
可以看到我们的工程中生成了一个podfile文件
podfile作用:指定项目所需的第三方库和它们的版本要求
- 打开podfile文件并对其进行编辑
这里以安装AFNetworking第三方库为例作展示
platform:ios,'9.0'target '工程名' dopod 'AFNetworking' #这里也可以是其他的第三方库end
- 在终端中安装我们的第三方库
在终端中输入命令pod install
安装完成后可以看到我们的工程中出现了AFNetworking的库
- 打开原工程文件进行编译操作
打开原工程进行编译操作
这一点一定需要记住,在安装成功我们的第三方库后一定需要打开文件进行编译运行操作(command + r 或 command + b都可以),然后会看到报错:
这是一定的,然后我们关闭文件
- 打开新创建的.xcworkspace进行后续的工作
我们对.xcworkspace进行编译操作发现其是可以编译成功的,然后我们再去点击我们的原工程文件,会出现这样的提示:
也就是说这两个文件我们只能打开一个,但是原工程文件是无法与我们安装的第三方库进行链接的,所以我们的工作台就变为了新创建的.xcworkspace文件,同样的,我们的代码以后都需要写在.xcworkspace文件中才能编译运行
第六与第七步是操作的重中之重,之前笔者就在这几步上困扰了很久,第六第七步的操作原理笔者也不甚理解,但大概应该是让我们的工程与第三方库进行链接的操作
总结
至此Cocoapods的安装以及使用大概也讲的七七八八了,本博客仅供交流学习,如有不足或错误请不吝指出
相关文章:

【iOS】Cocoapods的安装以及使用
文章目录 前言一、Cocoapods的作用二、安装Cocoapods三、使用Cocoapods总结 前言 最近笔者在仿写天气预报App时用到了api调用数据,一般的基本数据类型我们用Xcode中自带的框架就可以转换得到。但是在和风天气api中的图标的格式为svg格式。 似乎iOS13之后Xcode中可…...

OpenCvSharp (C# OpenCV) 二维码畸变矫正--基于透视变换(附源码)
导读 本文主要介绍如何使用OpenCvSharp中的透视变换来实现二维码的畸变矫正。 由于CSDN文章中贴二维码会导致显示失败,大家可以直接点下面链接查看图片: C# OpenCV实现二维码畸变矫正--基于透视变换 (详细步骤 + 代码) 实现步骤 讲解实现步骤之前先看下效果(左边是原图,右边…...

下级平台级联视频汇聚融合平台EasyCVR,层级显示不正确的原因排查
视频汇聚平台安防监控EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等…...
Android程序CPU使用大的异常分析
程序出现CPU使用过高的问题,如果能够重现,就比较好办了,可以top命令查看各线程的cpu使用,定位到线程。 以下是问国内某AI的答案 在Android应用中,如果某个应用消耗了大量的CPU资源,可以采取以下方法进行分…...
[数学建模] 0、关于数学建模的一点看法付费专栏食用说明
文章目录 1、前言2、数学建模学习索引2.1、建模知识点 3、实战建模论文索引3.1、国赛真题索引3.1.1、[数学建模] [2001年国赛模拟] 1. 血管的三维重建3.1.2、[数学建模] [2011年B国赛模拟] 2. 交巡警服务平台的设置与调度3.1.3、[数学建模][2012年A国赛模拟] 3. 葡萄酒的评价 3…...
2.oracle数据库自增主键
不同于mysql,oracle主键自增不能在建表时直接设置,其实也很简单 1.建表 CREATE TABLE test(id NUMBER NOT NULL,key1 VARCHAR2(40) NULL,key2 VARCHAR2(40) NULL);2.设置主键 alter table test add constraint test_pk primary key (id);3.新建序列tes…...
算法通关村第二关——链表加法的问题解析
题目类型 链表反转、栈 题目描述 * 题目: * 给你两个非空链表来表示两个非负整数,数字最高位位于链表的开始位置。 * 它们的每个节点都只存储一个数字。将这两个数相加会返回一个新的链表。 * 你可以假设除了数字0外,这两个数字都不会以0开头…...

mapboxGL中楼层与室内地图的结合展示
概述 质量不够,数量来凑,没错,本文就是来凑数的。前面的几篇文章实现了楼栋与楼层单体化的展示、室内地图的展示,本文结合前面的几篇文章,做一个综合的展示效果。 实现效果 实现 1. 数据处理 要实现上图所示的效果…...

使用Anaconda3创建pytorch虚拟环境
一、Conda配置Pytorch环境 1.conda安装Pytorch环境 打开Anaconda Prompt,输入命令行: conda create -n pytorch python3.6 输入y,再回车。 稍等,便完成了Pytorch的环境安装。我们可以利用以下命令激活pytorch环境。 conda…...
QT 常用数据结构整理
目录 QString篇 QString篇 //初始化bool bOk false;QString str "sd";QString strTemp(str);str QString("%1,%2").arg("11").arg("-gg");qDebug()<<str;str.sprintf("%s %d","ni",1);qDebug()<<…...

Fiddler使用教程|渗透测试工具使用方法Fiddler
提示:如有问题可联系我,24小时在线 文章目录 前言一、Fiddler界面介绍二、菜单栏1.菜单Fiddler工具栏介绍Fiddler命令行工具详解 前言 网络渗透测试工具: Fiddler是目前最常用的http抓包工具之一。 Fiddler是功能非常强大,是web…...

网站密码忘记了怎么办?chrome浏览器,谷歌浏览器。
有时候忘记了网站的密码,又不想“忘记密码”去一番折腾。如果你正好用的是 chrome 浏览器。 那么根本就没必要折腾,直接就能看到网站密码。 操作如下 1.在浏览器右上角点击三个小点: 2.点这三个点: 3.选择“显示密码”&#x…...

23款奔驰GLS450加装原厂香氛负离子系统,清香宜人,久闻不腻
奔驰原厂香氛合理性可通过车内空气调节组件营造芳香四溢的怡人氛围。通过更换手套箱内香氛喷雾发生器所用的香水瓶,可轻松选择其他香氛。香氛的浓度和持续时间可调。淡雅的香氛缓缓喷出,并且在关闭后能够立刻散去。车内气味不会永久改变,香氛…...

流数据湖平台Apache Paimon(一)概述
文章目录 第1章 概述1.1 简介1.2 核心特性1.3 基本概念1.3.1 Snapshot1.3.2 Partition1.3.3 Bucket1.3.4 Consistency Guarantees一致性保证 1.4 文件布局1.4.1 Snapshot Files1.4.2 Manifest Files1.4.3 Data Files1.4.4 LSM Trees 第1章 概述 1.1 简介 Flink 社区希望能够将…...

上传图片到腾讯云对象存储桶cos 【腾讯云对象存储桶】【cos】【el-upload】【vue3】【上传头像】【删除】
1、首先登录腾讯云官网控制台 进入对象存储页面 2、找到跨越访问CIRS设置 配置规则 点击添加规则 填写信息 3、书写代码 这里用VUE3书写 第一种用按钮出发事件形式 <template><div><input type"file" change"handleFileChange" /><…...
Hadoop教程_编程入门自学教程_菜鸟教程-免费教程分享
教程简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System)࿰…...

Mac 快速生成树形项目结构目录
我这里使用的是通过包管理 Homebrew安装形式。没有安装的话可以自行搜索 Homebrew 安装方式 brew install tree直接到项目的根目录执行 tree 命令 tree 效果如下: or : tree -CfL 3效果如下:...
使用fegin调用时,返回的值不能直接List这种,要使用对象包装一下
正确使用如下 fegin ResponseBodyGetMapping(value "/menu/queryAllNonLowCodePageSubmenuById")public Result<List<LinkTheFormPageDataDTO>> queryAllNonLowCodePageSubmenuById(RequestParam("id")int id);服务 ResponseBodyGetMapping(…...

springboot整合myabtis+mysql
一、pom.xml <!--mysql驱动包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--springboot与JDBC整合包--><dependency><groupId>org.springframework.b…...
博客摘录「 Redis( 缓存篇 ==> 超详细的缓存介绍与数据一致性解决方案 amp; 代码实现」
Redis 旁路缓存 由于高并发原因,先更新数据库和先更新缓存策略都会因为延迟时间而导致数据不一致问题。 两种策略 先删除缓存,再更新数据库;先更新数据库,再删除缓存。 因为缓存的写入通常要远远快于数据库的写入,…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...