Swift Then 庫是一款輕量級的 Swift 工具庫,核心作用是通過閉包語法糖簡化對象初始化與配置流程,讓代碼更簡潔、可讀性更強,尤其適合 UIKit 控件創建、模型配置等場景。以下是其核心特性與使用指南:
一、核心功能與優勢
// 傳統方式
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
}
// 可選對象配置
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]
let view = UIView().then {
$0.backgroundColor = .gray
}.snp.makeConstraints { make in
make.center.equalToSuperview()
make.size.equalTo(100)
}
二、安裝方式
https://github.com/devxoul/Then
pod 'Then'
三、高級用法
struct User {
var name: String = ""
var age: Int = 0
}
// 使用then配置
let user = User().then {
$0.name = "Alice"
$0.age = 25
}
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 開發。