Swift Then库
·
Swift Then 库是一款轻量级的 Swift 工具库,核心作用是通过闭包语法糖简化对象初始化与配置流程,让代码更简洁、可读性更强,尤其适合 UIKit 控件创建、模型配置等场景。以下是其核心特性与使用指南:
一、核心功能与优势
-
统一的配置接口为所有类型扩展
then方法,通过闭包直接配置对象属性,替代传统的 “初始化 + 逐行赋值” 模式。例如:swift
// 传统方式 let button = UIButton() button.setTitle("Submit", for: .normal) button.setTitleColor(.white, for: .normal) button.backgroundColor = .blue button.layer.cornerRadius = 8 // 使用Then库 let button = UIButton().then { $0.setTitle("Submit", for: .normal) $0.setTitleColor(.white, for: .normal) $0.backgroundColor = .blue $0.layer.cornerRadius = 8 } -
支持可选类型与集合不仅支持非可选对象,还适配可选类型(
Optional)和集合(Array/Dictionary)的配置:swift
// 可选对象配置 let label: UILabel? = UILabel().then { $0.text = "Hello" $0.font = .systemFont(ofSize: 16) } // 数组配置 let numbers = [1, 2, 3].then { $0.append(4) $0.removeFirst() } // 结果:[2, 3, 4] -
链式调用兼容可与其他链式语法(如 SnapKit 布局)无缝结合,进一步简化代码:
swift
let view = UIView().then { $0.backgroundColor = .gray }.snp.makeConstraints { make in make.center.equalToSuperview() make.size.equalTo(100) }
二、安装方式
-
Swift Package Manager(推荐)在 Xcode 中通过
File > Add Packages,输入仓库 URL:plaintext
https://github.com/devxoul/Then选择最新版本即可集成。
-
CocoaPods在
Podfile中添加:ruby
pod 'Then'执行
pod install完成安装。
三、高级用法
-
自定义类型扩展即使是自定义模型,也能通过
Then协议快速配置:swift
struct User { var name: String = "" var age: Int = 0 } // 使用then配置 let user = User().then { $0.name = "Alice" $0.age = 25 } -
与 RxSwift 结合在响应式编程中简化对象配置:
swift
let button = UIButton().then { $0.setTitle("Click", for: .normal) } button.rx.tap .subscribe(onNext: { print("Tapped") }) .disposed(by: disposeBag)
四、设计理念与适用场景
- 理念:借鉴 Kotlin 的
apply函数,通过闭包 “内联配置” 减少临时变量和冗余代码,让初始化逻辑更集中。 - 适用场景:
- UIKit 控件创建(按钮、标签、视图等);
- 模型对象的快速初始化与属性赋值;
- 第三方库实例的配置(如网络请求对象、数据库实例)。
五、注意事项
- 属于语法糖工具,核心功能仅简化代码结构,无性能损耗;
- 配置逻辑不宜过于复杂(如包含大量业务判断),否则会降低可读性;
- 与 SwiftUI 兼容性较弱(SwiftUI 本身通过
modifier实现链式配置),更适用于 UIKit 开发。
整体而言,Then 库以极小的体积(仅几十行代码)大幅提升 Swift 代码的简洁性,是 iOS 开发中轻量化的效率工具,尤其适合追求代码优雅性的开发者。
更多推荐



所有评论(0)