Swift Then 库是一款轻量级的 Swift 工具库,核心作用是通过闭包语法糖简化对象初始化与配置流程,让代码更简洁、可读性更强,尤其适合 UIKit 控件创建、模型配置等场景。以下是其核心特性与使用指南:

一、核心功能与优势

  1. 统一的配置接口为所有类型扩展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
    }
    
  2. 支持可选类型与集合不仅支持非可选对象,还适配可选类型(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]
    
  3. 链式调用兼容可与其他链式语法(如 SnapKit 布局)无缝结合,进一步简化代码:

    swift

    let view = UIView().then {
        $0.backgroundColor = .gray
    }.snp.makeConstraints { make in
        make.center.equalToSuperview()
        make.size.equalTo(100)
    }
    

二、安装方式

  1. Swift Package Manager(推荐)在 Xcode 中通过File > Add Packages,输入仓库 URL:

    plaintext

    https://github.com/devxoul/Then
    

    选择最新版本即可集成。

  2. CocoaPodsPodfile中添加:

    ruby

    pod 'Then'
    

    执行pod install完成安装。

三、高级用法

  1. 自定义类型扩展即使是自定义模型,也能通过Then协议快速配置:

    swift

    struct User {
        var name: String = ""
        var age: Int = 0
    }
    
    // 使用then配置
    let user = User().then {
        $0.name = "Alice"
        $0.age = 25
    }
    
  2. 与 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 开发中轻量化的效率工具,尤其适合追求代码优雅性的开发者。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐