ChangeableCopy 1.0.0

ChangeableCopy 1.0.0

Almazrafi 维护。



  • Almaz Ibragimov

ChangeableCopy

Build Status Codecov Cocoapods Carthage compatible SPM compatible Platforms Xcode Swift License

ChangeableCopy 是一个简单的库,提供了一种方便的方式来复制具有更改属性的 Swift 类型实例

struct User: AutoChangeable {
    let id: Int
    let name: String
    let age: Int
}

let steve = User(id: 1, name: "Steve", age: 21)

// Copy the instance by changing the `name` and `age` properties
let steveJobs = steve.changing { newUser in
    newUser.name = "Steve Jobs"
    newUser.age = 41
}

要求

  • iOS 10.0+ / macOS 10.12+ / watchOS 3.0+ / tvOS 10.0+
  • Xcode 11.0+
  • Swift 5.1+

使用方法

使用 ChangeableCopy 最便捷的方式是配置代码生成,并将您的结构体遵守 AutoChangeable 协议

struct User: AutoChangeable {
    let id: Int
    let name: String
    let age: Int
}

如果您不想配置代码生成,只需手动实现从副本初始化

extension User: Changeable {
    init(from copy: ChangeableCopy<Self>) {
        self.init(
            id: copy.id,
            name: copy.name,
            age: copy.age
        )
    }
}

安装

CocoaPods

CocoaPods 是 Cocoa 项目的一个依赖管理器。您可以使用以下命令来安装它:

$ gem install cocoapods

要使用 CocoaPods 将 ChangeableCopy 集成到您的 Xcode 项目的 Podfile 中,指定它:

platform :ios, '10.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'ChangeableCopy'
end

最后,运行以下命令:

$ pod install

Carthage

Carthage 是一个中心化的依赖管理器,它会构建您的依赖并提供二进制框架。您可以使用 Homebrew 安装 Carthage,如下所示:

$ brew update
$ brew install carthage

要使用 Carthage 将 ChangeableCopy 集成到您的 Xcode 项目的 Cartfile 中,指定它:

github "almazrafi/ChangeableCopy" ~> 1.0.0

最后,运行 carthage update 来构建框架,然后将构建的 ChangeableCopy.framework 拖到您的 Xcode 项目中。

Swift 包管理器

Swift 包管理器 是一个用于管理 Swift 代码分布的工具。它与 Swift 构建系统集成,以自动下载、编译和链接依赖关系。

要使用 Swift 包管理器将 ChangeableCopy 集成到您的 Xcode 项目的 Package.swift 中,将其作为依赖项添加:

.package(url: "https://github.com/almazrafi/ChangeableCopy.git", from: "1.0.0")

然后,将 "ChangeableCopy" 指定为您希望使用 ChangeableCopy 的目标的依赖项。

以下是一个 Package.swift 的示例

// swift-tools-version:5.0
import PackageDescription

let package = Package(
    name: "MyPackage",
    products: [
        .library(name: "MyPackage", targets: ["MyPackage"])
    ],
    dependencies: [
        .package(url: "https://github.com/almazrafi/ChangeableCopy.git", from: "1.0.0")
    ],
    targets: [
        .target(name: "MyPackage", dependencies: ["ChangeableCopy"])
    ]
)

代码生成

要为 AutoChangeable 协议生成代码,首先需要安装 Sourcery 的命令行工具。

您可以使用 Sourcery 的 Stencil 模板,该模板可以从 存储库发布页面 的最新版本文件中下载。

如果 ChangeableCopy 是使用 CocoaPods 安装的,它已经包含了这个模板和用于生成代码的辅助脚本。您可以手动运行它或使用以下命令在自定义构建阶段运行它:

Pods/ChangeableCopy/Misc/AutoChangeable \
--sources Path/to/yours/sources \
--output Path/to/generated/file

通信

  • 如果您需要帮助,请创建一个Issue。
  • 如果您发现一个错误,请创建一个Issue。
  • 如果您有功能请求,请创建一个Issue。
  • 如果您想做出贡献,请提交一个Pull Request。

许可证

ChangeableCopy遵守MIT许可证。有关更多信息,请参阅LICENSE文件。