AutoChangeable 1.0.1

AutoChangeable 1.0.1

Almazrafi 维护。



  • 作者:
  • Almaz Ibragimov

AutoChangeable

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

AutoChangeable 是一个简单的库,它提供了复制带有更改属性 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+

用法

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

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

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

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

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖项管理器。您可以用以下命令安装

$ gem install cocoapods

要将AutoChangeable集成到您的Xcode项目中,请使用CocoaPods,并在您的Podfile中指定它

platform :ios, '10.0'
use_frameworks!

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

最后运行以下命令

$ pod install

Carthage

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

$ brew update
$ brew install carthage

要使用Carthage将AutoChangeable集成到您的Xcode项目中,请在您的Cartfile中指定它

github "almazrafi/AutoChangeable" ~> 1.0.1

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

Swift Package Manager

Swift Package Manager 是一个用于管理Swift代码分布的工具。它集成到Swift构建系统中,以自动化下载、编译和链接依赖项的过程。

要使用Swift Package Manager将AutoChangeable集成到您的Xcode项目中,请将其添加为依赖项到您的Package.swift

.package(url: "https://github.com/almazrafi/AutoChangeable.git", from: "1.0.1")

然后,指定"AutoChangeable"作为希望使用AutoChangeable的目标的依赖项。

以下是一个示例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/AutoChangeable.git", from: "1.0.1")
    ],
    targets: [
        .target(name: "MyPackage", dependencies: ["AutoChangeable"])
    ]
)

代码生成

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

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

如果使用CocoaPods安装AutoChangeable,它已经包含此模板和一些生成代码的帮助脚本。您可以选择手动运行它或在自定义构建阶段使用以下命令运行它:

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

通信

  • 如果您需要帮助,请开启一个问题。
  • 如果您发现了一个错误,请开启一个问题。
  • 如果您有功能请求,请开启一个问题。
  • 如果您想贡献力量,请提交一个拉取请求。

许可

AutoChangeable 在MIT许可下可用。有关更多信息,请参阅 LICENSE 文件。