ChangeableCopy
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文件。