VDChain

Version License Platform

VDChain 是一个 Swift 库,它利用 @dynamicMemberLookupKeyPathcallAsFunction 的强大功能来实现函数链式调用。 这简化了对象的修改,从而实现了更简洁、更清晰的代码。

特性

要求

用法

首先在要使用它的文件中导入 SwiftChain

import VDChain

然后,您可以使用函数链式调用来修改您的对象。例如

let label = UILabel().chain
  .text("Text")
  .textColor(.red)
  .font(.system(24))
  .apply()

在此示例中,UILabeltexttextColorfont 属性通过函数链式调用进行设置。

链的创建

您可以使用三种方法来使用 VDChain 创建链

  1. 使用 .chain 属性:VDChain 在任何 NSObject 类型上提供 .chain 属性。 您还可以通过实现 Chainable 协议将此属性添加到您自己的类型中。 此协议提供静态属性和实例属性,允许您直接在您的类型上调用 .chain

    let label = UILabel().chain
      .text("Hello, World!")
      .textColor(.red)
      .apply()
  2. 使用后缀运算符 ~:您还可以使用 ~ 运算符创建链。 这是一种在任何值上开始链的简写方式,无需调用 .chain 属性或实现 Chainable 协议。

    let button = UIButton()~
      .title("Click me")
      .titleColor(.blue)
      .apply()
  3. 使用 EmptyChainingTypeChaining:您可以使用 EmptyChaining 类创建一个空链。

    let view = EmptyChaining(self).wrap()
      .backgroundColor(.green)
      .apply()

每个链方法都返回一个 Chain<...> 对象。 要从链中检索原始对象,只需使用 apply() 方法结束您的链即可。

类型和实例链式调用

VDChain 支持在类型和实例上进行链式调用。 您可以在类型上定义一系列方法链,并在以后在该类型的实例上使用此链

// Create a chain on the UILabel type that sets the text color to black
let blackColorModifier = UILabel.chain
  .textColor(.black)
  .apply()

// Use the chain on an instance of UILabel
let label = UILabel().chain
  .modifier(blackColorModifier)
  .apply()

这允许您在类型级别定义复杂的修改链,并根据需要轻松地将其应用于实例。

真实世界的用法示例

要查看 VDChain 的实际应用,请查看我的另一个库 VDLayout

安装

  1. Swift Package Manager

创建一个 Package.swift 文件。

// swift-tools-version:5.0
import PackageDescription

let package = Package(
  name: "SomeProject",
  dependencies: [
    .package(url: "https://github.com/dankinsoid/VDChain.git", from: "3.6.0")
  ],
  targets: [
    .target(name: "SomeProject", dependencies: ["VDChain"])
  ]
)
$ swift build
  1. CocoaPods

将以下行添加到您的 Podfile

pod 'VDChain'

并首先从 podfile 目录运行 pod update

作者

dankinsoid, voidilov@gmail.com

许可证

VDChain 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。