Alamofire 42k Star 的 Swift 网络请求库,写起来是真舒服

QML 转场效果:滑动推挤、旋转、缩放拉近与抖动 本文介绍四种无需着色器的QML基础转场效果:滑动推挤、旋转、缩放拉近与抖动。均通过直接操作底图的位置、缩放与旋转属性实现,依赖Stage.qml注入的fromImg、toImg及progress参数,利用clip: true裁剪越界内容。效果简洁高效,适用于L0层动画,强调纯属性驱动与直观视觉反馈。 阅读详情

Alamofire: 42k Star 的 Swift 网络请求库,写起来是真舒服

Swift 做 iOS 开发,绕不开网络请求。系统自带的 URLSession 功能齐全,但用起来繁琐,每次发请求都要写一堆模板代码。Alamofire 就是为了解决这个问题而生的。

正文顶部截图

Alamofire 是一个用 Swift 编写的 HTTP 网络库,目前在 GitHub 上收获了 42,387 个 Star。它由 Alamofire Software Foundation 维护,从 2014 年开始发展至今,已经是 Swift 生态中最主流的网络层方案之一。

它做了什么

简单来说,Alamofire 把 URLSession 的底层能力封装成了一套链式调用的 API。发一个 GET 请求,核心代码只需要一行:

let response = await AF.request("https://httpbin.org/get").serializingDecodable(MyModel.self).response

对比原生 URLSession 的写法,代码量差距明显。而且这一行代码里已经包含了自动重试、缓存策略、响应校验等能力,不需要额外配置。

核心特性

Alamofire 的功能覆盖面比较全,列举几个常用的:

  • 链式请求/响应方法:所有操作可以串成一条链,可读性好
  • Swift Concurrency 支持:从 iOS 13、macOS 10.15 起就支持 async/await,不需要额外适配
  • Combine 支持:可以用响应式的方式处理网络数据流
  • URL/JSON 参数编码:自动处理参数序列化
  • 文件上传/下载:支持 File、Data、Stream、MultipartFormData 等多种方式
  • 请求动态适配与重试:通过 RequestInterceptor 实现自动重试和请求修改
  • TLS 证书固定:支持证书和公钥 Pinning,提升安全性
  • 网络状态监测:内置 Reachability 检测能力
  • cURL 命令输出:调试时可以直接生成对应的 cURL 命令

README区域截图

平台兼容性

Alamofire 当前支持 Swift 6.0/6.1/6.2,覆盖的平台包括 iOS、macOS、tvOS、watchOS、visionOS、Linux、Windows 和 Android。

其中 Apple 平台是完整支持,经过充分测试。Linux、Windows 和 Android 可以编译通过,但因为底层 swift-corelibs-foundation 存在一些缺陷,部分功能不可用,比如证书固定、HTTP 认证、缓存控制、WebSocket 等。项目方建议在这些平台上遇到问题时向 Swift 官方提交 Bug 报告。

安装方式

支持四种安装方式,按优先级排列:

Swift Package Manager(推荐)

在 Package.swift 中添加依赖:

dependencies: [
    .package(url: "Alamofire.git", .upToNextMajor(from: "5.11.0"))
]

然后引用 Alamofire target 即可。

CocoaPods

pod 'Alamofire'

Carthage

github "Alamofire/Alamofire"

手动集成

把 Alamofire.xcodeproj 拖进项目的 Project Navigator,选择对应的 framework 即可。

生态扩展

Alamofire 本身只做核心网络功能。如果需要图片加载和缓存,有官方的 AlamofireImage 库;如果需要控制 iOS 状态栏的网络活动指示器,有 AlamofireNetworkActivityIndicator。这两个子库由同一个基金会维护,和 Alamofire 配合使用。

一些细节

Alamofire 这个名字来源于 Alamo Fire 花,是德克萨斯州州花蓝帽花的一个杂交品种。

项目采用 MIT 协议开源。官方文档在 Alamofire 的 GitHub Pages 上有完整版本,从基础用法到高级自定义都有覆盖。遇到问题可以在 Stack Overflow 上用 alamofire 标签提问,也可以在 Swift 官方论坛的 Related Projects 板块讨论。

对于 Swift 开发者来说,如果项目需要一个稳定、功能完整、社区活跃的网络库,Alamofire 是目前最主流的选择。42k Star 的背后是十年的持续维护和大量生产环境的验证。

开发者来说,如果项目需要一个稳定、功能完整、社区活跃的网络库,Alamofire 是目前最主流的选择。42k Star 的背后是十年的持续维护和大量生产环境的验证。

Sigrity OptimizePI Best Capacitor Location Estimation模式如何评估电容最佳位置操作指导 Sigrity OptimizePI Best Capacitor Location Estimation模式用于前仿真分析,评估电容的最佳位置以获得最小回路电感,如何分析,以下图为例进行说明。IC devices,输入U*, A*, B*, Q*, P*,将所有这些字母开头的器件都识别为IC。Min设置为1(最少电容个数为1),max设置为28(最多电容个数为28)Capacitors 输入C*,将所有C开头的器件都识别为电容。Grid X设置为8,Grid Y也设置为8。 阅读详情

相关推荐

C# typeof() 和 GetType()区别

总得来说他们都是为了获取某个实例具体引用的数据类型System.Type。 1、GetType()方法继承自Object,所以C#中任何对象都具有GetType()方法,x.GetType(),其中x为变量名,由x实例返回得到一个类型 2、typeof(x)中的x,必须是具体的类名、类型名称等,不可以是变量名称,返回一个类型 3、System.Type.GetType(),有两个重载方法 比如有这样一个变量i: Int32 i = new Int32(); 使用GetType(),i...

Peter的博客 1955

编译期常量不是 Dart 专有的概念

Dart 中的“编译期常量”指在编译阶段即可确定值的常量,如 const secondsPerHour = 60 * 60。此类常量无需运行时计算,而 final 变量可在运行时初始化,如 final startTime = DateTime.now()。const 要求初始值为编译期常量,不可变;final 不限于编译期,但初始化后不可修改。类似概念见于 C++ constexpr、C# const,Swift let 则更接近 Dart final。

侯仕奇的博客 208

Cesium 模拟飞机坠毁功能

Cesium 模拟飞机坠毁功能,粒子模拟

QQhelphelp的博客 1068

05 · OpenStack的对象存储 Swift——海量静态数据的“无限仓库“

本文系统解析 OpenStack Swift 对象存储,厘清其与块、文件存储的本质区别:面向永久静态数据(如镜像、图片、备份)的长期存储,采用最终一致性模型。核心为 Account→Container→Object 三级结构,容器不支持嵌套,通过对象名前缀模拟目录。依托三类 Ring(Account/Container/Object)实现分布式定位,基于一致性哈希与副本机制保障高可用与无限扩展。实验环节可完成加盘、分区、挂载及 Ring 构建,验证多副本落点。对比华为 OBS、Ceph 等,凸显其在海量非结

路漫漫其修远兮,吾将上下而求索 582

告别‘抓瞎’:CANoe的Trace、Graphics和Logging窗口实战技巧,高效分析总线故障

本文深入解析CANoe的Trace、Graphics和Logging窗口实战技巧,帮助工程师高效分析总线故障。通过智能过滤、可视化监控和智能日志管理,构建系统级问题定位工作流,显著提升车载网络故障排查效率。

weixin_42709044的博客 293

别再为域名备案发愁了!微信小程序后端调用,试试这个‘官方捷径’——云托管

本文介绍了微信小程序后端部署的新思路——利用微信云托管服务绕过域名备案难题。通过详细的环境准备、数据库配置、服务部署和小程序端调用方案,帮助开发者快速实现小程序与后端服务的无缝对接,大幅缩短上线周期并降低运维成本。

weixin_29243279的博客 676

腾讯云国际充值未到账:从汇款附言到入账匹配的排查顺序

腾讯云国际站电汇充值没到账,原因大多不在"钱丢了",而在附言没写账号 ID、金额或币种与订单不符、中转行扣费造成短款、款项挂在待认领状态、重复提交触发风控。本文按从提交到入账的实际链路给出一张排查顺序表,每步附上现象、判断依据和对应动作,并说明工单该怎么写才不用来回三轮。

aolicloud的博客 385

深入理解DQN中的Q值:核心概念和应用

在强化学习中,Q值(或称为动作价值函数)是核心概念之一。Q值函数 ( Q(s, a) ) 表示在给定状态 ( s ) 下,采取动作 ( a ) 并遵循某策略后,智能体从当前状态到未来状态所能获得的预期总回报。简言之,Q值是评估特定状态和动作对的好坏的指标。

qlkaicx的博客 2975

Flutter 可以更直接地调用原生 API 了,Dart Direct Native Interop

以前 Dart 层的没有用包装函数可以被 Tree Shaking 删除,但 Native Library 需要整体打包,现在配合 Link Hook 和支持裁剪的原生工具链,就可以进一步剔除没有用到的 Native Symbol,从而优化产物大小。这对依赖 SQLite、加密库、音视频库的插件也有意义,不过它需要相应的构建和链接配置,不是说升级 Dart 后任何原生库都会自动完成裁剪。2024 年:Dart 3.5 开始在完善 C、Java、Kotlin、Objective-C 的直接互操作能力。

恋猫de小郭的博客 279

【VTKExamples】PolyData-1:: CellEdgeNeighbors & CellPointNeighbors 检索Cell边相邻的Cells & 检索Cell点相邻的Cells

本文主要分享VTKExample中两个样例CellEdgeNeighbors.cxx & CellPointNeighbors.cxx,了解VTK中如何对Cell进行邻域检索!输入模型 基于Edge检索结果 基于Point检索结果目录前言1. 基于Edge检索核心代码2.基于Point检索核心代码3.基于Edge检索样例代码4. 基于Point检索样例代码1.

qq_40041064的博客 672

从零开始之驱动发开、linux驱动(七、字符驱动之led最终版)

我们上一接用的gpiolib非常杂乱,使用了两种 1.各硬件厂商实现的,如s3c_gpio_cfgpin(S5PV210_GPJ0(5), S3C_GPIO_SFN(1)) 2.系统公共的,如gpio_set_value(S5PV210_GPJ0(4),val) 其实公共的也是对各硬件厂商的封装,用那个都可以,个人建议用系统公共的,应为这样换芯片厂商,不影响任何使用。   2.错误处理基...

To_run_away的博客 2387

Ceph 对象存储(RGW)与文件系统(CephFS)管理

本文系统介绍Ceph对象存储(RGW)与文件系统(CephFS)的管理机制。重点阐述RGW的realm、zonegroup、zone多站点架构,涵盖S3/Swift接口部署、用户管理、配额控制及跨区域复制;CephFS部分则详解MDS元数据服务、池创建、Kernel/FUSE挂载、目录授权、快照与镜像功能。结合实际命令演示配置验证流程,全面展示两大存储接口在云环境中的应用能力。

xianyuCcCcCCCcc的博客 248

mediasoup源码分析(二十)服务端架构设计

目录 简介 信令服务(房间服务) 调度服务 媒体服务 简介 流媒体服务器大的方向上可以分为上述三个模块。目前行业内都是分布式服务,独立部署。mediasoup信令与媒体之间虽然可以管道通信。但在行业内,服务之间通过管道通信用的少。 一般是rpc、mq,或者传统的tcp。这块licode架构比较不错,licode是信令和媒体服务通过MQ消息队列解耦。 下面介绍一下这三个服务主要功能,当然文中所说也是一家之言。 信令服务(房间服务) 信令服务也称为房间服务。有的企业把信令和房间分开,信..

lcalqf的专栏 1545

【FDE知识库】(1):AI 编程时代开发语言选型分析,云使用go,企业用java,算法python,底层c

AI 编程时代,开发语言选型需综合考量AI适配度、编译速度、跨平台与学习成本。Python以海量语料和即时执行成首选,适用于AI/ML与原型开发;TypeScript凭借类型系统与秒级构建,成为前端及应用层主流;Go以极速编译与统一风格,契合AI代理高效迭代需求。Rust/C++虽性能强,但编译慢、学习成本高,不适于快速试错。综合推荐:优先选Python、TypeScript、Go,兼顾效率与生态,实现最优AI协作体验。

freewebsys的专栏 550

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

[iOS]Runtime2

为了让你在父类中依然能访问当前对象(也就是子类的实例),编译器在底层会生成一个结构体,叫 : 当调用 时,底层调用的函数是 : 拿着(也就是当前的子类对象)作为消息接收者,但是把方法查找的起点定位在了 (父类)这里需要注意的就是仍然是调用者自己,即先讲一下上篇没讲过的,我们如果缓存未命中,那我们就会进入慢速查找,现在我们来详细的讲解在进入慢速查找的瞬间会再看一遍方法列表,然后立刻调用加锁,因为多线程下别人正在动态添加方法或者扩容,不加锁会崩溃类就绪OC的机制就是在编译期只生成了 结构,当类首次被发送消息时(

wzm20070304的博客 255

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VS Code + KXApp 开发 iOS 报错排查指南,工程、签名、真机、补全、配置

在 VS Code 里用 KXApp 开发 iOS,报错常不在代码而在环境。本文按失败阶段分五类排查:工程没出现 Xcode 视图(查 .xcodeproj 与 xcode-select)、构建失败(No profiles、Team 签名、CocoaPods 用 .xcworkspace)、真机调试失败(信任、开发者模式、设备未准备好)、没补全或 No such module(等索引、清 clangd 冲突)、设置保存不了(装 xcodeproj gem),每类给现象、日志通道和修法。

2501_91590906的博客 202

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

uni-app 和 Flutter 打包上架 iOS 频繁触发 4.3 (a):原因拆解与合规处理路径

跨端方案让 iOS 上架的门槛降低了,但也带来一个明显的副作用 ——4.3 (a) 的命中率显著高于原生项目。很多开发者不理解:业务代码明明是自己写的,为什么还会被判为重复应用。这篇专门讲跨端场景,把原因和可走的路径讲清楚。

wuxianda1030的博客 192

Appuploader 创建 iOS 描述文件详解,Development / Ad Hoc / App Store

搞不清 iOS 描述文件(Provisioning Profile)该选 Development、Ad Hoc 还是 App Store?本文讲清四种类型各装到哪、哪些要绑设备、能不能上架,重点辨析最容易混的 Development 与 Ad Hoc,说明设备或证书变动后为什么要重建、重建后要重新导入签名,并给出不用 Mac 在 Windows/Linux 上用 Appuploader 新建与重建描述文件的实操步骤,附装机"描述文件不匹配"等常见问题排查。

2501_91373349的博客 235

VS Code 开发 iOS 工程,KXApp 与 Xcode 分工,双工具协同实操

想用 VS Code 写 iOS 又担心脱离 Xcode、搞乱团队工程?本文讲清 KXApp 和 Xcode 的并用关系:它是 Mac 上的 VS Code 扩展、必须装 Xcode 并调用它构建签名,两边共用编译结果(一边编过另一边不用重编)、共用同一份工程文件不迁移,补全用的 buildServer.json 可 gitignore 不影响同事,签名沿用 Xcode 登录的账户,Cmd+B/R/. 快捷键一致,Interface Builder 和 Instruments 仍回 Xcode。

2501_91592143的博客 53

苹果的内核跑上了安卓手机:2,631 Star 的 HakiOS 让 XNU 在 Adreno GPU 上画出 118 帧

HakiOS 把苹果开源的 XNU 内核搬上 Android 手机:自研引导器与驱动、RAM 内运行重启即还原,Metal 在 Adreno GPU 上跑出 118 帧。本文拆解其分层架构、双路线性能对比与法律边界。

话梅糖の优快云 Blog 336

Windows 开发 iOS,Sign in with Apple 苹果登录,KXBuild 真机调试全流程

Sign in with Apple 接入分四步:App ID 开能力并重新生成描述文件,entitlements 加 com.apple.developer.applesignin,用 SignInWithAppleButton 拿 identityToken 交服务端验签,删账号时调 revoke。本文讲清审核指南 4.8 为什么要你提供它、姓名邮箱只给一次、用 user 当主键,并在 Windows 上用 KXBuild 真机测登录,附 1000 报错排查。

2501_91373349的博客 229

Appuploader 配置 iOS Bundle ID,开启推送、iCloud,解决描述文件失效问题

App 代码没动,去开发者后台取消勾选一个能力,再打包就签名失败、描述文件失效——为什么?本文讲清 iOS Bundle ID(App ID)的注册规矩(反向域名、创建后 Identifier 不可改、通配符、App Clip)、用 Appuploader 配置推送/iCloud/App Groups 等 Capabilities 的方法,重点说明能力配置与 Apple 门户实时同步、描述文件是能力的快照,以及取消能力为何导致描述文件失效、怎么重建修复,附改名、删除、通配符等常见问题。

2501_91591841的博客 152

iOS 深度链接配置教程,URL Scheme 与 Universal Links,KXBuild 真机验证

深度链接两种:URL Scheme(myapp://)只改 Info.plist 的 CFBundleURLTypes;Universal Links(https://)要开 Associated Domains、在 entitlements 写 applinks 域名、网站放 /.well-known/apple-app-site-association。讲清两者怎么选、onOpenURL 处理代码,在 Windows 上用 KXBuild 装 Debug 包真机验证,附 CDN 缓存和十个不跳转排查。

2501_91600747的博客 290

手机远程控制电脑哪家强?2026年iOS/安卓/鸿蒙横评实测,ToDesk/向日葵谁更流畅

手机远程控制电脑已成刚需,ToDesk凭借全平台覆盖、低延迟、无广告、免费不限速等优势,成为最佳选择。其iOS、安卓、鸿蒙及Mac系统均支持,实测连接快、操作流畅,虚拟键盘、外接键鼠、互动批注等功能体验出色。相较之下,向日葵存在限时踢线、传输慢、广告多等痛点。选购建议:无论用何种手机,首选ToDesk,实现高效便捷的远程办公与协助。

lx08113的博客 303

uni-app iOS 离线打包教程,Windows KXBuild 本地生成 IPA,页面秒推真机

uni-app 云打包老排队、次数受限、改一次 manifest 原生配置就得重打?用 KXBuild 的 HBuilderX 插件在 Windows 本地做 uni-app 离线打包 iOS:导入同版本离线 SDK、填好 AppKey 和证书,就能运行到 iPhone 真机,改页面用"推送"几秒生效,最后生成可上传 App Store Connect 的 ipa,全程不用云打包。附 AppKey 错误、版本不匹配白屏、相机闪退等 9 个常见问题排查。

2501_91510632的博客 204

Cocos Creator3.8.8 + Xcode27.2 编译运行失败

Cocos Creator3.8构建IOS工程后,使用最新的Xcode27.2版本进行真机调试,遇到C++标准库冲突,如is_floating_point、is_arithmetic和is_signed失败,以及webp对齐失败等问题。

HYNN12的博客 401
上一篇: pycabcrypt:Python 密码哈希的标准选择
下一篇: Steam 官方版下载Steam 安装教程
普通网友
博客等级 码龄1年 12粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值