iOS 开发中,用好库和工具能省不少时间。今天分享 7 个高质量的工具库,覆盖进度提示、后端开发、API 调用、异常处理、文档编辑、自动化测试等。
1. MBProgressHUD:iOS 进度提示组件
GitHub 地址:https://github.com/jdg/MBProgressHUD
MBProgressHUD 是一个老牌的进度提示组件,用 OC 写的,在 iOS 开发者里普及度很高。它经过了十几年的打磨,稳定性没话说。核心功能就是各种加载场景:菊花转、进度条、成功或失败的提示,登录、网络请求、下载这些场景都能用。基本上是个 App 都能用到。
使用示例代码:
// 显示加载中
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.label.text = @"加载中...";
// 模拟请求完了隐藏掉
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[hud hideAnimated:YES];
});
// 带进度的
MBProgressHUD *progressHUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
progressHUD.mode = MBProgressHUDModeDeterminate;
progressHUD.progress = 0.5f;
项目有 15K+ stars,API 设计成熟,用着省心。相比那些小众加载框,稳定性和兼容性更有保障。
2. Vapor:Swift 全栈开发的后端首选
GitHub 地址:https://github.com/vapor/vapor
如果你用 Swift 想写后端,Vapor 是个不错的选择。它是一个服务端框架,和 iOS 应用配合起来很顺畅,写法有点像 Node.js。内置了路由、中间件、ORM 这些核心功能,可以前后端都用 Swift 写,代码能复用,类型也安全。
使用示例代码:
import Vapor
let app = try Application(.detect())
defer { app.shutdown() }
app.get("hello") { req -> String in
return "Hello, World!"
}
app.get("users", ":id") { req -> String in
guard let userId = req.parameters.get("id") else {
throw Abort(.badRequest)
}
return "User ID: \(userId)"
}
try app.run()
项目有 26K+ stars,社区活跃,文档也全。适合想用 Swift 写后端的人,或者想给 iOS App 快速搭个配套服务的开发者。
3. Open-Meteo:免费开源的天气 API
GitHub 地址:https://github.com/open-meteo/open-meteo
这是一个免费开源的天气 API,专门给天气类应用用的。后端是用 Swift 写的,不用申请 Key 就能直接调,对独立开发者很友好。通过 HTTP 请求就能拿到天气数据,天气 App、户外运动、旅游类应用都能用,免费额度对个人开发者来说完全够。
使用示例代码:
import Foundation
let latitude = 39.9042
let longitude = 116.4074
let urlString = "https://api.open-meteo.com/v1/forecast?latitude=\(latitude)&longitude=\(longitude)¤t_weather=true"
if let url = URL(string: urlString) {
URLSession.shared.dataTask(with: url) { data, response, error in
guard let data = data else { return }
if let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any],
let currentWeather = json["current_weather"] as? [String: Any] {
print("当前温度: \(currentWeather["temperature"] ?? "")°C")
}
}.resume()
}
项目有 4.9K+ stars,一直在维护。比那些收费的天气 API 门槛低,用起来也灵活。
4. Try:混编项目的异常处理利器
GitHub 地址:https://github.com/Weebly/Try
这个库专门解决 OC 和 Swift 混编项目里的异常处理问题,相当于在 OC 异常和 Swift 错误系统之间搭了座桥。在 Swift 里调用可能会抛出 OC 异常的代码时,能抓住异常,避免程序闪退。特别适合混编项目、调用第三方 OC 库或者系统 API 的场景。
使用示例代码:
import Try
do {
try Try.catch {
let array = NSArray()
_ = array.object(at: 100) // 越界了,会抛异常
}
} catch {
print("捕获到异常: \(error)")
}
// 也能拿返回值
let result: String? = try? Try.catch {
return someObjCMethod()
}
项目 stars 不算多,但专门解决混编项目的异常痛点。被 OC 异常折磨的开发者可以试试。
5. Swift OpenAPI Generator:Apple 官方 API 代码生成器
GitHub 地址:https://github.com/apple/swift-openapi-generator
这是 Apple 官方的 OpenAPI 代码生成工具。后端给了 OpenAPI 文档后,它能自动生成 Swift 客户端代码,省去了手写网络请求的麻烦。通过 SPM 插件使用,在 Package.swift 里配置好,编译的时候就会根据指定位置的 OpenAPI 文档,自动生成类型安全的模型和 API 调用代码,完美支持 async/await。
配置示例代码:
dependencies: [
.package(url: "https://github.com/apple/swift-openapi-generator", from: "1.0.0"),
.package(url: "https://github.com/apple/swift-openapi-runtime", from: "1.0.0"),
],
plugins: [
.plugin(name: "OpenAPIGenerator", package: "swift-openapi-generator"),
]
官方出品,和 Swift 生态结合得很紧。如果项目里 API 接口多,用这个能省不少事,也避免手写容易出错。
6. MarkEdit:轻量原生 Markdown 编辑器
GitHub 地址:https://github.com/MarkEdit-app/MarkEdit
这是一个用 Swift + SwiftUI 开发的 macOS 原生 Markdown 编辑器,不是 Electron 套壳,启动很快,界面也清爽。支持语法高亮、实时预览、Vim 模式这些核心功能,免费开源,写技术文档、博客、README 都很合适。
源码也可以当作 SwiftUI 实际项目的学习案例。相比那些臃肿的 Electron 编辑器,这个轻量多了。目前有 3.8K+ stars,一直在维护。
7. AXe:iOS 模拟器自动化工具
GitHub 地址:https://github.com/cameroncooke/AXe
这是一个针对 iOS 模拟器的命令行自动化工具,通过 Apple 的私有 API 来操作模拟器。能启动/关闭模拟器、安装/卸载应用、模拟触摸滑动、截图、获取 UI 元素信息等。适合用在 CI/CD 自动化测试、批量操作模拟器这些场景,能大幅提升效率。
常用命令示例:
axe list
axe boot "iPhone 15 Pro"
axe install /path/to/app.app
axe tap 100 200
axe screenshot ~/Desktop/screenshot.png
工具比较新,stars 不多,但精准解决了 iOS 模拟器自动化测试的痛点。做 iOS 自动化测试的话可以重点关注。
